qt QVector push_back无法使用

qt QVector push_back无法使用,qt,qvector,Qt,Qvector,我有一个很奇怪的问题。在我的项目中,QVector不能使用push_back()来增加价值,但是vector可以使用它;像这样: void Widget::SplitStr(string s, QVector<string> &v, const string c) { string::size_type pos1, pos2; pos2 = s.find(c); pos1 = 0; while(string::npos != pos2)

我有一个很奇怪的问题。在我的项目中,
QVector
不能使用
push_back()
来增加价值,但是vector可以使用它;像这样:

void Widget::SplitStr(string s, QVector<string> &v, const string c)
{
    string::size_type pos1, pos2;

    pos2 = s.find(c);
    pos1 = 0;

    while(string::npos != pos2)
    {
        v.push_back(s.substr(pos1, (pos2-pos1+c.size()-1)));
        pos1 = pos2 + c.size();
        pos2 = s.find(c, pos1);
    }
    if(pos1 != s.length())
        v.push_back(s.substr(pos1));
}
void小部件::SplitStr(字符串s、QVector&v、常量字符串c)
{
字符串::大小\类型pos1,pos2;
pos2=s.find(c);
pos1=0;
while(字符串::npos!=pos2)
{
v、 向后推(s.substr(pos1,(pos2-pos1+c.size()-1));
pos1=pos2+c.尺寸();
pos2=s.find(c,pos1);
}
if(pos1!=s.length())
v、 向后推(s.substr(位置1));
}

这是一个Qt项目。只有在这个项目中,我才遇到了这个奇怪的问题。如果有人能帮助我,我将不胜感激


多谢各位

项目中的其他地方很可能存在未定义的行为,这会破坏状态。但是您也没有错误检查:
c.empty()==true时,函数不会终止-它将继续添加输入字符串的副本,直到内存耗尽。可能就是这样。

我的qt是5.3,请将QCustomPlot添加到项目中。我很感谢您对我的问题的回答。事实上,不仅仅是这个函数有这个结果,这就是整个项目。如果将QVector更改为vector,就没有问题了。再次感谢@莫爱迪生M79那么很明显你在项目的其他地方有未定义的行为。如果您正在迭代一个
QVector
,请确保在迭代过程中不要试图修改它-
std::vector
通常会为您隐藏此问题,但无论您使用的是两个向量中的哪一个,它都同样错误。