我想排序我的地圖內的一些向量,但是當我運行該程序時,我有一個分段錯誤。排序向量在地圖C++
typedef map<int, vector<int> > Map;
Map m;
for (Map::iterator it = m.begin(); it != m.end(); ++it) {
sort(it->second.begin(), it->second.end());
}
只是排序之前,我有一個插入DATAS節:
int x = 2;
int y = 3;
map<int, vector<int> >::iterator itTemp;
itTemp = FontaneMapX.find(x);
if (itTemp == m.end())
itTemp = m.insert(make_pair(x,vector<int>())).first;
itTemp->second.push_back(y);
我不刪除/本節中,沒有事件到地圖裏面的載體後,添加項目。
我應該改變什麼想法?
我這裏跑了你的代碼http://ideone.com/wBKuDP並且沒有段錯誤。這不是確鑿的,它可能是偶然的。但是我看不出代碼有什麼問題,所以也許別的東西會導致錯誤。 –
順便說一句,你也可以做到這一點,可能會更清楚:'vector&vec = m [x]; if(vec.empty())vec.push_back(y);'如果它不存在,它將使用默認構造函數創建值。 –
@Neil不需要'if(vec.empty())'測試,它也不會出現在OP的代碼中。只要做'm [x] .push_back(y);' - 一行而不是四行。 ;-) –