您的位置:首页 > 财经 > 金融 > 看24小时b站直播_php创建网页_如何推销自己的产品_百度站长工具怎么用

看24小时b站直播_php创建网页_如何推销自己的产品_百度站长工具怎么用

2024/12/23 16:34:16 来源:https://blog.csdn.net/wkd_007/article/details/142500727  浏览:    关键词:看24小时b站直播_php创建网页_如何推销自己的产品_百度站长工具怎么用
看24小时b站直播_php创建网页_如何推销自己的产品_百度站长工具怎么用

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀
🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭
⏰发布时间⏰: 2024-09-26 09:08:26

本文未经允许,不得转发!!!

目录

  • 🎄一、概述
  • 🎄二、QList 新增数据
    • ✨2.1 构造函数
    • ✨2.2 在尾部添加数据
    • ✨2.3 在首部添加数据
    • ✨2.4 在指定位置添加数据
  • 🎄三、QList 查询数据
    • ✨3.1 元素个数相关查询
    • ✨3.2 获取元素
    • ✨3.3 查询元素的下标
    • ✨3.4 判断是否包含某个元素
    • ✨3.5 迭代器
  • 🎄四、QList 删除数据
    • ✨4.1 清空数据
    • ✨4.2 删除某个元素
  • 🎄五、QList 修改数据
  • 🎄六、总结


在这里插入图片描述
在这里插入图片描述

🎄一、概述

Qt 提供了一组通用的基千模板的容器类。对比 C丑一的标准模板库中的容器类, Qt 的这些容器更轻量、更安全并且更容易使用。

存储在 Qt 容器中的数据必须是可赋值的数据类型,包括大多数数据类型,如:基本数据类型(如 int 和 double等)和 Qt 的一些数据类型(如 QString 、 QDate 和 QTime 等)。不过, Qt 的 QObject 及其他的子类(如 QWidget 和 Qdialog 等)是不能够存储在容器中的,例如QList<QLineEdit> list;是不允许的。

QList<T>是迄今为止最常用的容器类,它存储给定数据类型 T 的一列数值。下面将从增删改查四个方面来介绍怎么使用QList<T>


在这里插入图片描述

🎄二、QList 新增数据

✨2.1 构造函数

QList()
QList(const QList<T> &other)
QList(QList<T> &&other)
QList(std::initializer_list<T> args)

🌰构造一个QList对象时,需要指定元素类型<T>,下面是一些构造QList的例子:

// 2.1 构造
QList<int> intList;
intList << 1 << 2 << 3 << 4 << 5;
qDebug() << intList;QList<int> intListAdd(intList);
qDebug() << intListAdd;

✨2.2 在尾部添加数据

push_back 是为了兼容C++的STL,它等价于append。

void append(const T &value)
void append(const QList<T> &value)
void push_back(const T &value)
QList<T> operator+(const QList<T> &other) const
QList<T> &operator+=(const QList<T> &other)
QList<T> &operator+=(const T &value)
QList<T> &operator<<(const QList<T> &other)
QList<T> &operator<<(const T &value)

🌰在尾部添加数据时,使用 << 运算符最直观,下面是一些例子:

// 2.2 在尾部添加数据
QList<int> listAddTail;
listAddTail << 5 << 4 << 3 << 2 << 1;
qDebug() << listAddTail;    // (5, 4, 3, 2, 1)listAddTail.append(0);
qDebug() << listAddTail;    // (5, 4, 3, 2, 1, 0)qDebug() << listAddTail + intList;  // (5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5)listAddTail += 6;
qDebug() << listAddTail;    // (5, 4, 3, 2, 1, 0, 6)

✨2.3 在首部添加数据

push_front 是为了兼容C++的STL,它等价于prepend。

void prepend(const T &value)
void push_front(const T &value)

🌰举例子:

// 2.3 在首部添加数据
QList<int> listAddHead;
listAddHead << 1 << 2 << 3 << 4 << 5;listAddHead.prepend(0);
qDebug() << listAddHead;

✨2.4 在指定位置添加数据

void insert(int i, const T &value)
QList::iterator insert(QList::iterator before, const T &value)

🌰举例子:

QList<int> listInsert;
listInsert << 1 << 2 << 3 << 4 << 5;
listInsert.insert(3,3);
qDebug() << listInsert; // (1, 2, 3, 3, 4, 5)QList<int>::iterator itorInsert = listInsert.begin();   // 迭代器指向首个元素
itorInsert++;   // 迭代器移动到第二个元素
listInsert.insert(itorInsert, 2);
qDebug() << listInsert; // (1, 2, 2, 3, 3, 4, 5)

在这里插入图片描述

🎄三、QList 查询数据

✨3.1 元素个数相关查询

empty 函数是为了兼容 C++ 的STL,等价于 isEmpty 。

int count(const T &value) const	// 计算某个元素的个数
int count() const
int length() const
int size() const
bool isEmpty() const
bool empty() const

🌰举例子:

// 3.1 元素个数相关查询
QList<QString> listSize;
listSize << "1" << "2" << "3" << "4" << "5";
qDebug() << "count=" << listSize.count() << ", len=" << listSize.length() << ", size=" << listSize.size();
qDebug() << "count of 3=" << listSize.count("3");
qDebug() << listSize.isEmpty();
listSize.clear();
qDebug() << listSize.empty();

运行结果:
在这里插入图片描述


✨3.2 获取元素

获取单个元素,QList提供了4种策略:

  • 获取指定位置元素
  • 获取第一个元素
  • 获取最后一个元素
  • 从指定位置开始获取指定长度的元素

函数原型如下:

// 获取指定位置元素
const T &at(int i) const
T value(int i) const
T value(int i, const T &defaultValue) const
T &operator[](int i)
const T &operator[](int i) const// 获取第一个元素
T &first()
T &front()
const T &first() const
const T &front() const
const T &constFirst() const// 获取最后一个元素
T &back()
T &last()
const T &last() const
const T &back() const
const T &constLast() const// 从指定位置开始获取指定长度的元素
QList<T> mid(int pos, int length = -1) const

🌰举例子:

QList<QString> listGet;
listGet << "1" << "2" << "3" << "4" << "5";
qDebug() << "at_1=" << listGet.at(1) << ", value_2=" << listGet.value(2) << ", [3]=" << listGet[3];
qDebug() << "fist=" << listGet.first() << ", front=" << listGet.front();
qDebug() << "back=" << listGet.back() << ", last=" << listGet.last();
qDebug() << "mid_2=" << listGet.mid(2) << ", last=" << listGet.mid(3,2);

运行结果:
在这里插入图片描述


✨3.3 查询元素的下标

indexOf:从首部开始查询第一个匹配到的元素的下标;
lastIndexOf:从尾部开始查询第一个匹配到的元素的下标;

int indexOf(const T &value, int from = ...) const
int lastIndexOf(const T &value, int from = ...) const

🌰举例子:

QList<QString> listGetIndex;
listGetIndex << "1" << "2" << "3" << "4" << "1" << "5";
qDebug() << listGetIndex.indexOf("1");		// 0
qDebug() << listGetIndex.lastIndexOf("1");	// 4

✨3.4 判断是否包含某个元素

bool contains(const T &value) const
bool startsWith(const T &value) const
bool endsWith(const T &value) const

🌰举例子:

// 3.4 判断是否包含某个元素
QList<QString> listContains;
listContains << "1" << "2" << "3" << "4" << "5";
qDebug() << listContains.contains("1");     // true
qDebug() << listContains.startsWith("1");   // true
qDebug() << listContains.endsWith("1");     // false

✨3.5 迭代器

查询的时候,很多时候需要用到迭代器,下面是 QList 的迭代器函数原型:

QList::const_iterator begin() const
QList::const_iterator end() const
QList::const_iterator cbegin() const
QList::const_iterator cend() const
QList::const_iterator constBegin() const
QList::const_iterator constEnd() const
QList::const_reverse_iterator crbegin() const
QList::const_reverse_iterator crend() const
QList::const_reverse_iterator rbegin() const
QList::const_reverse_iterator rend() constQList::iterator begin()
QList::iterator end()
QList::reverse_iterator rbegin()
QList::reverse_iterator rend()

🌰举例子:

// 3.5 迭代器
QList<QString> listItorSample;
listItorSample << "1" << "2" << "3" << "4" << "5";
for(QList<QString>::const_iterator itor = listItorSample.constBegin(); itor!=listItorSample.constEnd(); itor++)
{qDebug() << *itor;
}
qDebug(" ");
for(QList<QString>::const_iterator itor = listItorSample.cbegin(); itor!=listItorSample.cend(); itor++)
{qDebug() << *itor;
}
qDebug(" ");
for(QList<QString>::reverse_iterator  itor = listItorSample.rbegin(); itor!=listItorSample.rend(); itor++)
{qDebug() << *itor;
}

运行结果:
在这里插入图片描述


在这里插入图片描述

🎄四、QList 删除数据

✨4.1 清空数据

void clear()

🌰举例子:

// 4.1 清空数据
QList<QString> listCLear;
listCLear << "1" << "2" << "3" << "4" << "5";
qDebug() << listCLear;
listCLear.clear();
qDebug() << listCLear;

运行结果:
在这里插入图片描述


✨4.2 删除某个元素

void removeAt(int i)// 删除指定下标的元素
void removeFirst()	// 删除首个的元素
void removeLast()	// 删除最后一个的元素
int removeAll(const T &value)	// 删除 QList对象中 与指定元素相同的所有元素
bool removeOne(const T &value)	// 删除 QList对象中 与指定元素相同的第一元素
void pop_back()		// 兼容 STL,等价于removeLast
void pop_front()	// 兼容 STL,等价于removeFirst// 删除并获取值,如果不需要获取值,removeAt会更高效
T takeAt(int i)
T takeFirst()
T takeLast()QList::iterator erase(QList::iterator pos)
QList::iterator erase(QList::iterator begin, QList::iterator end)

🌰举例子:

// 4.2 删除元素
QList<QString> listRemove;
listRemove << "1" << "2" << "3" << "4" << "5" << "4" << "3" << "2" << "1";
listRemove.removeAt(1);
qDebug() << listRemove; // ("1", "3", "4", "5", "4", "3", "2", "1")
listRemove.removeFirst();
qDebug() << listRemove; // ("3", "4", "5", "4", "3", "2", "1")
listRemove.removeLast();
qDebug() << listRemove; // ("3", "4", "5", "4", "3", "2")
listRemove.removeAll("4");
qDebug() << listRemove; // ("3", "5", "3", "2")
listRemove.removeOne("3");
qDebug() << listRemove; // ("5", "3", "2")
QList<QString>::iterator itor = listRemove.begin();
listRemove.erase(++itor);
qDebug() << listRemove; // ("5", "2")
qDebug(" ");

在这里插入图片描述

🎄五、QList 修改数据

修改数据的函数不多,一个是移动元素的move,另一个是替换元素的replace,还有就是将 QList 对象转换成其他容器类对象。具体函数原型如下:

void move(int from, int to)			// 移动元素
void replace(int i, const T &value)	// 替换元素
QSet<T> toSet() const			// 转换成 QSet 对象
std::list<T> toStdList() const	// 转换成 std::list 对象
QVector<T> toVector() const		// 转换成 QVector 对象

🌰举例子:

QList<QString> listChange;
listChange << "1" << "2" << "3" << "4" << "5";
listChange.move(2,listChange.size()-1);
qDebug() << listChange;
listChange.replace(2,"3");
qDebug() << listChange;
QVector<QString> vectorChange = listChange.toVector();
qDebug() << vectorChange;

在这里插入图片描述

🎄六、总结

👉本文介绍 Qt 的 QList 是使用总结,从 增、查、删、改 四个方面去翻译Qt文档。

在这里插入图片描述
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁

参考:
Qt文档
https://blog.csdn.net/u014779536/article/details/111029600

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com