我对STL容器有一个奇怪的问题。
我有一个私人会员std::map<string, string> _environment
。为什么当我在类构造函数(或任何地方)中调用_environment["name"]="john"
时,我得到Segmentation fault
?
它应该是STL容器最常用的,不应该吗?
谢谢!
编辑(更多代码):
在shell.h中:
#include <string>
#include <map>
using namespace std;
class Shell {
public:
Shell();
Shell(const Shell& orig){};
virtual ~Shell(){};
private:
...
...
std::map<string, string> _environment;
};
在shell.cpp中:
Shell::Shell() {
_environment["shell"] = "myshell";
...
}
分段错误发生在行_environment["shell"] = "myshell";
答案 0 :(得分:0)
分段错误没有理由。为简化插入,我建议使用boost :: assign库,如下所示:
Shell::Shell() {
using namespace boost::assign;
insert( _environment )( "shell", "myshell" );
...
}
这更优雅,更有效。