首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ 地图遇到的有关问题

2014-01-17 
求助:C++ map遇到的问题一个简单的类:#include string#include iostream#include map#include vect

求助:C++ map遇到的问题
一个简单的类:
#include <string>
#include <iostream>
#include <map>
#include <vector>
using namespace std;
class TestObj {
public:
    TestObj();
    virtual ~TestObj();
private:
    map<string, vector<string>*> m;
};

TestObj::TestObj() {
    cout << m.size() << endl;
    vector<string>* vec = new vector<string>();
    cout << "-vec-->" << vec << endl;
    m.insert(make_pair("key", vec));
    cout << "-[key]-->" << m["key"] << endl << endl;

    vector<string>* vec2 = m["key2"];
    cout << "-vec2-->" << vec2 << endl;
    if (vec2 == 0) {
        vec2 = new vector<string>();
        cout << "-vec2-->" << vec2 << endl;
        m.insert(make_pair("key2", vec2));
        cout << "-[key2]-->" << m["key2"] << endl;
    }
}

测试:
int main() {
    TestObj* obj = new TestObj();
    delete obj;
}

输出:
0
-vec-->0x751010
-[key]-->0x751010

-vec2-->0
-vec2-->0x7510a0
-[key2]-->0

话说,为什么第次取key2 取出来的是0? 求教大神们

[解决办法]
vector<string>* vec2 = m["key2"];
这句已经建立了key2了吧
底下再insert就会失败,注释掉这句或者
m.insert(make_pair("key2", vec2)); 改成 m["key2"] = vec2;

热点排行