index of std::vector with condition
This is a multi-part message in MIME format.
----------------1142442620464863424
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
Hello,
is there a fast way to create a index with condition of a std::vector?
For illustrating:
I have a vector mydata with some data and I would like to create a
vector with unique elements
std::vector<T> l_unique( mydata );
std::sort( l_unique.begin(), l_unique.end() );
l_unique.erase( std::unique( l_unique.begin(), l_unique.end()),
l_unique.end() );
in the next step I will do this
std::vector< std::vector<std::size:t> > index;
for(std::size_t i=0; i < l_unique.size(); ++i) {
std::vector<std::size_t> y;
for(std::size_t n=0; n < mydata.size(); ++n)
if (mydata[n] == l_unique[i])
y.push_back(n);
index.push_back(y);
}
Can I do this two for loops more efficient? I would like to get the
index position in my data vector from a unique set of the elements
within the vector.
Thanks for help
Phil
----------------1142442620464863424
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<meta name="Generator" content="Cocoa HTML Writer">
<meta name="CocoaVersion" content="949.54">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 14.0px; font: 12.0px Helvetica; min-height: 14.0px}
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 14.0px; font: 12.0px Helvetica}
p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco}
span.s1 {color: #5c2699}
span.s2 {color: #3f6e74}
span.s3 {color: #26474b}
span.Apple-tab-span {white-space:pre}
</style>
</head>
<body>
<p class="p1">Hello,</p>
<p class="p2"><br></p>
<p class="p3">is there a fast way to create a index with condition of a std::vector?</p>
<p class="p3">For illustrating:</p>
<p class="p2"><br></p>
<p class="p3">I have a vector mydata with some data and I would like to create a vector with unique elements</p>
<p class="p2"><br></p>
<p class="p4"><span class="s1">std</span>::<span class="s2">vector</span><<span class="s1">T</span>> l_unique( mydata );</p>
<p class="p4"><span class="s1">std</span>::<span class="s3">sort</span>( l_unique.begin(), l_unique.end() );</p>
<p class="p4">l_unique.erase(<span class="Apple-converted-space">? </span><span class="s1">std</span>::<span class="s3">unique</span>( l_unique.begin(), l_unique.end()), l_unique.end()<span class="Apple-converted-space">? </span>);</p>
<p class="p2"><br></p>
<p class="p3">in the next step I will do this</p>
<p class="p2"><br></p>
<p class="p3">std::vector< std::vector<std::size:t> > index;</p>
<p class="p3">for(std::size_t i=0; i < l_unique.size(); ++i) {</p>
<p class="p3"><span class="Apple-converted-space">? ? ? </span>std::vector<std::size_t> y;</p>
<p class="p2"><span class="Apple-converted-space">?? ? ?</span></p>
<p class="p3"><span class="Apple-converted-space">? ? ? </span>for(std::size_t n=0; n < mydata.size(); ++n)</p>
<p class="p3"><span class="Apple-tab-span"> </span>if (mydata[n] == l_unique[i])</p>
<p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>y.push_back(n);</p>
<p class="p2"><br></p>
<p class="p3"><span class="Apple-tab-span"> </span>index.push_back(y);</p>
<p class="p3">}</p>
<p class="p2"><br></p>
<p class="p3">Can I do this two for loops more efficient? I would like to get the index position in my data vector from a unique set of the elements within the vector.</p>
<p class="p2"><br></p>
<p class="p3">Thanks for help</p>
<p class="p2"><br></p>
<p class="p3">Phil</p>
</body>
</html>
----------------1142442620464863424--