将std :: string插入std :: vector <std :: string>时出现分段错误

时间:2019-02-07 16:35:37

标签: c++ c++11 segmentation-fault stdvector stdstring

我遇到了使用迭代器为std :: vector插入函数的一些奇怪行为。

我想做的基本上是从文本文件中按字母顺序输入字符串,但是当我将std :: vector :: insert函数与字符串一起使用时,我得到了Segmentation Fault(核心转储)消息。 std :: vector :: push_back可以正常工作。

换句话说,执行如下操作:

std::vector<int> intVec;
intVec.push_back(1);
std::vector<int>::iterator it = intVec.begin();
intVec.insert(it, 5);

这样的操作会导致细分错误:

std::vector<std::string> strVec;
std::vector<std::string>::iterator it = strVec.begin();
strVec.push_back("some string");
strVec.insert(it, "some other string");

使用诸如std :: sting var =“ some string”之类的变量进行插入也不起作用,也不使用c_str()函数。

有人知道为什么会出现这个问题吗?感谢您的解释。

P.S。我可以使用不同的机制解决排序问题,只想弄清楚这里发生了什么。

0 个答案:

没有答案