Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QStringList“;“索引超出范围”;_Qt_Outofrangeexception_Qstringlist - Fatal编程技术网

Qt QStringList“;“索引超出范围”;

Qt QStringList“;“索引超出范围”;,qt,outofrangeexception,qstringlist,Qt,Outofrangeexception,Qstringlist,我试图在QStringList中反转单词。下面是到目前为止的代码,但我不断得到一个“索引超出范围”错误。从错误看来,我试图使用超出范围的数据,但无法解决我的问题 QString reversed; QStringList reversedlist; QStringlist list = input.split(" "); for (int i=0;i<list.length(); ++1) reversedlist[i] = list[list.length() -1 -i]; r

我试图在
QStringList
中反转单词。下面是到目前为止的代码,但我不断得到一个“索引超出范围”错误。从错误看来,我试图使用超出范围的数据,但无法解决我的问题

QString reversed;
QStringList reversedlist;
QStringlist list = input.split(" ");

for (int i=0;i<list.length(); ++1)
  reversedlist[i] = list[list.length() -1 -i];

reversed = reversedlist.join(" ");`
QString反转;
QStringList反向列表;
QStringlist list=input.split(“”);

对于(int i=0;i您的reversedList最初为空。您必须实际附加这些项,如下所示:

reversedlist.push_back (list[list.length () - 1 - i]);

当然,试图通过
reversedList[i]
访问不存在的项是不起作用的,会抛出索引超出范围错误。

您得到的索引超出范围,因为QStringList reversedList中没有sting。因此,当您的代码到达行reversedList[0]时,它会抛出“索引超出范围”错误。您可以使用[0]和“无法指定”读取值。 如果要将该值分配给QStringList的特定索引

QString reversed;
    QStringList reversedlist;

    QString input="123 456 789 000";
    QStringList list = input.split(" ");

    for (int i=0;i<list.length(); ++i){
      //value to particular index
      reversedlist.insert(i,list[list.length() -1 -i]);
    }

    reversed = reversedlist.join(" ");

    qDebug() << reversed;
QString反转;
QStringList反向列表;
QString input=“123 456 789 000”;
QStringList list=input.split(“”);

对于@ThorngardSO指出的(int i=0;i,
reversedlist
最初为空,您试图访问循环代码中的无效索引。您应该使用以下函数之一向列表中添加值:

  • STL兼容函数(在列表的末尾插入值)
  • STL兼容函数(在列表的开头插入值)
  • Qt功能(Qt替代品用于
    推回
  • Qt功能(Qt替代品适用于
    前推
如您所见,
prepend()
在列表的开头插入元素,这就是为什么它使列表的反转非常简单:

for (int i = 0; i < list.length(); ++i) {
    reversedlist.prepend(list[i]);
}
for(int i=0;i

另外,请注意,循环中有一个输入错误:它应该是
++i
,而不是
++1

'QString reversed;QStringList reversedlist;QStringList list=input.split(“”);for(int i=0;我可以这样更改for循环:for(int i=0;i它是做什么的?
++1
prepend
push_front
需要在每次插入时向前移动数组中的所有其他元素(即O(n));您刚刚做了O(n^2)一个操作,即O(n)如果操作正确。@MatteoItalia from:QList在其内部缓冲区的两侧预先分配了额外的空间,以允许列表两端的快速增长uh jeez,出于某种原因,我在考虑QVector。对您的帖子进行一些编辑(例如,添加此引号以强调这与QVector和/或std::vector不同),这样我就可以逆转我的投票。@MatteoItalia添加了“STL兼容”的备注,以避免误解。感谢您指出这一点。@ThorngarSO-工作非常出色,非常感谢您的帮助,非常感谢!