Мне интересно, как решить эту проблему, когда векторы (vec, vec2) уничтожаются после выхода из storeData(), что вызывает ошибку сегментации в main(). Должен ли я выделять память для каждого вектора (vec, vec2)? Если да, то как лучше всего это сделать? Кроме того, как я мог удалить их после? Спасибо.
#include <map>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void storeData();
multimap<int, vector<string> > mypairs;
void storeData()
{
vector<string> vec;
vec.push_back("one");
vec.push_back("two");
vector<string> vec2;
vec2.push_back("alpha");
vec2.push_back("beta");
mypairs.insert(make_pair(1, vec));
mypairs.insert(make_pair(2, vec2));
}
int main(int, char**)
{
storeData();
string str;
vector<string>::const_iterator it;
multimap<int, vector<string> >::const_iterator res;
res = mypairs.find(1);
for(it = res->second.begin(); it < res->second.end(); it++) {
str = *it;
}
//use string str to do something else later...
}
mypairs.find(1)
, если он возвращает итераторend()
. В данном случае это работает, так что проблема не в коде, который вы показали, точно так же, как вчера, когда вы задавали этот вопрос. - person Blastfurnace   schedule 14.12.2013