我在做這個操作很掙扎,我有一個矢量,它的大小可能是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;
}
從我不明白的目標是什麼的介紹。您輸出的示例輸出沒有排序......正在整理您想要的內容或其他內容? – jogojapan 2013-02-20 04:31:00
我覺得你只需要一個std :: sort來替換你的代碼的函數。或者我完全誤解你的問題? – billz 2013-02-20 04:31:27