簡體   English   中英

C ++多圖 <int, vector<string> &gt;內存分配問題

[英]C++ multimap<int, vector<string>> memory allocation issue

我想知道如何解決這個問題,其中退出storeData()后向量(vec,vec2)被破壞,這會導致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...
}

vecvec2將被復制到mypairs ,因此原始對象是否被破壞都沒有關系。

您應該發布有關段錯誤的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM