我想解決這個問題:Search multiple list for missing entries。我用一個multimap來複制密鑰。這裏是我的代碼:將兩個列表合併成一個列表
#include <iostream>
#include <map>
#include <list>
#include <utility>
using namespace std;
int main(){
list<char>a;
list<int> b;
multimap<char,int>s;
a.push_back('A');
a.push_back('B');
a.push_back('C');
b.push_back(1);
b.push_back(2);
b.push_back(3);
s.insert(std::pair<char,int>('A',1));
s.insert(std::pair<char,int>('A',2));
s.insert(std::pair<char,int>('B',2));
s.insert(std::pair<char,int>('B',3));
s.insert(std::pair<char,int>('C',1));
s.insert(std::pair<char,int>('C',3));
list<char>::iterator it;
list<int>::iterator IT;
multimap<char,int>::iterator i;
for (i=s.begin();i!=s.end();i++){
for (IT=b.begin();IT!=b.end();IT++){
i=s.find(*IT);
if (i==s.end()){
cout<<(*i).first<< " "<<*IT<<endl;
}
}
}
return 0;
}
它編譯但我運行後,其異常停止運行。我想我沒有正確地訪問元素。請幫幫我。 編輯: 我已經更新了我的代碼
#include <iostream>
#include <map>
#include <list>
#include <utility>
using namespace std;
int main(){
list<char>a;
list<int> b;
multimap<char,int>s;
a.push_back('A');
a.push_back('B');
a.push_back('C');
b.push_back(1);
b.push_back(2);
b.push_back(3);
s.insert(std::pair<char,int>('A',1));
s.insert(std::pair<char,int>('A',2));
s.insert(std::pair<char,int>('B',2));
s.insert(std::pair<char,int>('B',3));
s.insert(std::pair<char,int>('C',1));
s.insert(std::pair<char,int>('C',3));
list<char>::iterator it;
list<int>::iterator IT;
multimap<char,int>::iterator i;
for (it=a.begin();it!=a.end();it++){
for (i=s.begin();i!=s.end();i++){
for (IT=b.begin();IT!=b.end();IT++){
if ((*i).first==*it && ((*i).second!=*IT)){
cout<<(*i).first<< " "<<*IT<<endl;
}
}
}
}
return 0;
}
但這裏實在是太多了組合的話,我需要那麼是什麼問題,我認爲它應該工作正常