0
我有這樣一段代碼:爲什麼設置<string> ::迭代器不能用作映射關鍵字?
set<string>::iterator it1;
set<string>::iterator it2;
pair<set<string>::iterator,bool> ret;
set<string> s;
ret = s.insert("bbbb1");
it1 = ret.first;
ret = s.insert("bbbb2");
it2 = ret.first;
map<set<string>::iterator, set<string>::iterator> m;
m.insert(make_pair(it1,it2));
但最後一行 「m.insert(make_pair(IT1,IT2));」失敗..
使用迭代器作爲映射鍵是一個可怕的想法(因爲任何迭代器隨後失效可能會導致未定義的行爲)。不要這樣做。 :-( –
@Chris:迭代器到std :: set很少失效 –
@James:是的,但是如果項目從集合中移除,那些與這些項目對應的迭代器就是:-) –