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