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