读书人

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

发布时间: 2014-01-17 15:01:00 作者: rapoo

求助: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;

读书人网 >C++

热点推荐