私はこの操作を行うのに苦労しています、私はベクトルを持っています、そのサイズはかもしれません200000
、それはのようなデータを含んでいます(156,256,789,1,2,1,1,1,63,89,7,8,45,1,1,2,5,8,9,6,47,8,96,5,465,6,etc)
。
私の質問は、データをとして取得するのが好き
( 0,1,2,3,4,3,3,3,5,6,7,8,9,3,3,4,10,8,11,etc)
です。
私はこの操作を迅速かつ効果的な方法で行う必要があります。同じことについていくつかの提案をしてください。
私のコードは
vector<int>* VectorReader::SortID(vector<int>* tempID)
{
std::vector<int>::iterator new_sortit;
vector<int> newit_ID;
newit_ID.resize(tempID->size());
copy( tempID->begin(), tempID->end(), newit_ID.begin());
int i = 0;
for( new_sortit =tempID->begin(); new_sortit != tempID->end(), i < tempID->size(); new_sortit++ )
{
int min_ID = *min_element( tempID->begin(), tempID->end());
int max_ID = *max_element( tempID->begin(), tempID->end());
int search_NodeID = std::find ( tempID->begin(), tempID->end(), min_ID) - tempID->begin();
replace( newit_ID.begin()+search_NodeID, newit_ID.end(), min_ID, i );
max_ID++;
replace( tempID->begin(), tempID->end(), min_ID, max_ID );
i++;
}
copy( newit_ID.begin(), newit_ID.end(), tempID->begin( ));
return tempID;
}