QT编程 QList 使用方法 15
intmain(intargc,char*argv[]){QCoreApplicationa(argc,argv);QTextStreamco(stdout,QIODev...
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QTextStream co(stdout, QIODevice::WriteOnly);
QList<QString> list;
list <<"aa" <<"BB" <<"cc";
co <<list.size()<<endl;
co <<list.takeAt(0)<<endl;
co <<list.takeAt(1)<<endl;
co <<list.takeAt(2)<<endl;
return a.exec();
}
程序蹦掉了输出:
ASSERT failure in QList<T>::take: "index out of range", file ..\..\..\QT\4.8.2\include/QtCore/../../src/corelib/tools/qlist.h, line 485
3
aa
cc
1.那个·"BB"呢,为什么没了。
2.list.size()明显是3个,为什么··take(2)这里会崩掉 展开
{
QCoreApplication a(argc, argv);
QTextStream co(stdout, QIODevice::WriteOnly);
QList<QString> list;
list <<"aa" <<"BB" <<"cc";
co <<list.size()<<endl;
co <<list.takeAt(0)<<endl;
co <<list.takeAt(1)<<endl;
co <<list.takeAt(2)<<endl;
return a.exec();
}
程序蹦掉了输出:
ASSERT failure in QList<T>::take: "index out of range", file ..\..\..\QT\4.8.2\include/QtCore/../../src/corelib/tools/qlist.h, line 485
3
aa
cc
1.那个·"BB"呢,为什么没了。
2.list.size()明显是3个,为什么··take(2)这里会崩掉 展开
3个回答
2015-07-15 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:25897
获赞数:1464986
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。
向TA提问 私信TA
关注
展开全部
QList是一种表示链表的模板类。
QList是Qt的一种泛型容器类。它以链表方式存储一组值,并能对这组数据进行快速索引,还提供了快速插入和删除等操作。
QList、QLinkedList和QVector提供的操作极其相似:
对大多数操作来说,我们用QList就可以了。其API是基于索引(index)的,因此用起来比QLinkedList更方便(QLinkedList的API是基于迭代器的)。QList比QVector更快,这是由它们在内存中的存储方式决定的。
需要使用QLinkedList的地方:
需要使用QVector的地方:元素的储存位置彼此相邻。
QList表示为一组指向被存储元素的数组。(例外,如果T本身就是指针类型,或者是size不大于指针类型的基本类型,或者是Qt的共享类,那么QList会直接在指针数组中存储这些元素。)元素个数小于1000的QList能够很快地实现在链表中间插入操作,以及快速的查找操作。此外,由于QList在链表两端都预先分配了内存,因此实现prepend()和append()操作都很快。
注意:对于size比指针大的共享类,使用QVector会更好。
QList是Qt的一种泛型容器类。它以链表方式存储一组值,并能对这组数据进行快速索引,还提供了快速插入和删除等操作。
QList、QLinkedList和QVector提供的操作极其相似:
对大多数操作来说,我们用QList就可以了。其API是基于索引(index)的,因此用起来比QLinkedList更方便(QLinkedList的API是基于迭代器的)。QList比QVector更快,这是由它们在内存中的存储方式决定的。
需要使用QLinkedList的地方:
需要使用QVector的地方:元素的储存位置彼此相邻。
QList表示为一组指向被存储元素的数组。(例外,如果T本身就是指针类型,或者是size不大于指针类型的基本类型,或者是Qt的共享类,那么QList会直接在指针数组中存储这些元素。)元素个数小于1000的QList能够很快地实现在链表中间插入操作,以及快速的查找操作。此外,由于QList在链表两端都预先分配了内存,因此实现prepend()和append()操作都很快。
注意:对于size比指针大的共享类,使用QVector会更好。
展开全部
你要输出链表的话,可以用at(),而不是takeAt(),takeAt()是删除链表中的元素
3是长度
takeAt(0),删掉了第一个元素,那么接下来剩下两个元素,BB,cc,
然后takeAt(1),要删掉第二个元素,现在list剩下了BB,cc,第二个自然是cc
然后list只剩下了BB,你要takeAt(2),删掉第三个元素,list中根本没有第三个,自然会报错误
index out of range
希望有用
看看blog.csdn.net/xie376450483
3是长度
takeAt(0),删掉了第一个元素,那么接下来剩下两个元素,BB,cc,
然后takeAt(1),要删掉第二个元素,现在list剩下了BB,cc,第二个自然是cc
然后list只剩下了BB,你要takeAt(2),删掉第三个元素,list中根本没有第三个,自然会报错误
index out of range
希望有用
看看blog.csdn.net/xie376450483
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我这编译通过了,并没有出现你写得编译错误,这不应该是一个编译器bug,你把“co <<list.takeAt(2)<<endl;”去掉试一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询