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
通常会为您隐藏此问题,但无论您使用的是两个向量中的哪一个,它都同样错误。