我在做这个操作时很挣扎,我有一个向量,它的大小可能是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;
}