与 stl 和 boost 库中的链表差不多,都有我们常见的属性,如at、push_back、push_front、erase 等等,操作与我们以前学习过的都大相径庭,所以我只贴出代码,有更多需要可以参考 Qt 帮助文档。下面只是 QList 的代码,其实你把里面 QList 的关键字替换成 QVector 就可以切换成数组形式了。这是 Qt 对为了让大家更方便的使用,所以让接口风格装都保持一致性,只不过在遍历时,vector使用at方法要比遍历链表速度快。

#include
#include
#include

int main()
{
QList list;

// 追加数据
list.append("abc");
list.append("def");
list.append("ghi");

// 相当于 append
list << "jkl";

// stl风格插入数据
list.push\_back("mno");
list.push\_front("pqr");

#if 0
// 删除所有为 abc 的元素
list.removeAll(“abc”);
// 删除第一个为 def 的元素
list.removeOne(“def”);
// 删除位置为 0 的元素
list.removeAt(0);
// 删除首元素
list.removeFirst();
// 删除尾元素
list.removeLast();
// 全部删除
list.clear();
#endif

// 遍历方式1
foreach(QString tmp, list)
{
    qDebug() << tmp;
}

// 遍历方式2,如果要在for中删除数据时,最好将迭代器放到循环中自增,防止删除数据后遍历不准的情况
for(QList<QString>::iterator it = list.begin();
    it != list.end();
    /\*it ++\*/)
{
    if (\*it == "abc")
    {
        it = list.erase(it);
    }
    else
    {
        it++;
    }
}

// 遍历方式3,效率最低
/\*for(int i = 0; i < list.size(); i++)
{
    qDebug() << list.at(i);
}\*/
return 0;

}