C ++ multimap <int,vector <string =“”>&gt;内存分配问题</int,>

时间:2013-12-13 23:58:17

标签: c++ string vector multimap

我想知道如何解决这个问题,其中vector(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...
}

1 个答案:

答案 0 :(得分:0)

vecvec2将被复制到mypairs,因此原始对象是否被销毁无关紧要。

您应该发布有关segfault的更多信息。