湘潭建设网站,做网页制作的价格,网站建设时间影响因素,东莞seo按天计费QVector_QMap
QVector简介
头文件#xff1a;#includeQVector
模块#xff1a; QT core
功能#xff1a; QVector类是动态数组的模板类#xff0c;顺序容器#xff0c;它将自己的每一个对象存储在连续的内存中#xff0c;可以使用索引号来快速访问它们 常用…QVector_QMap
QVector简介
头文件#includeQVector
模块 QT core
功能 QVector类是动态数组的模板类顺序容器它将自己的每一个对象存储在连续的内存中可以使用索引号来快速访问它们 常用接口
判断容器是否为空
bool QVector::isEmpty() const如果容器为空返回true QVectorint v; qDebug() v.isEmpty(); 查询元素个数
count() 、size() 、length() QVectorint v; v 1 2 3; qDebug() v.size(); qDebug() v.length(); qDebug() v.count(); 获取vector客观容量
int capacity() const //返回可以存储在vector中而不强制重新分配的最大项数 QVectorint v; v.insert(0, 1); v.insert(1, 2, 2); v.replace(2, 3); v 1 1 1; qDebug() v.capacity(); 访问数据
下标方式访问 QVectorint v; v 1 2 3; qDebug() v.at(0); qDebug() v[0];
迭代器方式访问 QVectorint v; v 1 2 3; QVectorint::iterator it v.begin(); for(;it! v.end(); it) { qDebug() *it; } 添加数据
在尾部添加数据
void append(const T value)
void append(const QVectorT value)
void push_back(const T value) QVectorint v; v.append(1); QVectorint v1 {2, 3}; v.append(v1); v.push_back(4); qDebug() v;
在头部添加数据
void prepend(const T value)
void push_front(const T value) QVectorint v; v.prepend(1); v.push_front(2); qDebug() v;
在任意位置添加数据
void insert(int i, const T value) //将元素插入到i位置i从0开始计算
void insert(int i, int count, const T value) //从i位置开始插入count个T value类型元素 QVectorint v; v.insert(0, 1); v.insert(1, 2, 2); qDebug() v; 修改数据
void replace(int i, const T value) //改变i位置元素的值 QVectorint v; v.insert(0, 1); v.insert(1, 2, 2); v.replace(2, 3); qDebug() v; 查找元素位置
int indexOf(const T value, int from...) const //返回 value在vector中第一次出现的位置
参数form含义如果指定则从索引from开始向前搜索 QVectorint v; v.insert(0, 1); v.insert(1, 2, 2); v.replace(2, 3); qDebug() v.indexOf(1);
int QVector::lastIndexOf(const T value, int from ...) const //返回 value在vector中最后一次出现的位置 QVectorint v; v.insert(0, 1); v.insert(1, 2, 2); v.replace(2, 3); v 1 1 1; qDebug() v.lastIndexOf(1); 判断容器是否包含某元素
bool QVector::contains(const T value) const //如果vector包含value则返回true QVectorint v; v.insert(0, 1); v.insert(1, 2, 2); v.replace(2, 3); v 1 1 1; qDebug() v.contains(1);
bool QVector::endsWith(const T value) const //如果vector最后一个元素等于value则返回true QVectorint v; v.insert(0, 1); v.insert(1, 2, 2); v.replace(2, 3); v 1 1 1; qDebug() v.endsWith(1);
bool QVector::startsWith(const T value) const //如果vector第一个元素等于value则返回true QVectorint v; v.insert(0, 1); v.insert(1, 2, 2); v.replace(2, 3); v 1 1 1; qDebug() v.startsWith(1); 截取链表
QVectorT QVector::mid(int pos, int length ...) const //返回一个子容器其中包含该容器中的元素从位置pos开始。如果length为-1则包含pos之后的所有元素否则包含长度元素(如果链表长度小于长度元素则包含所有剩余元素) QVectorint v; v.insert(0, 1); v.insert(1, 2, 2); v.replace(2, 3); v 1 1 1; qDebug() v.mid(0); qDebug() v.mid(1, 2); 删除数据
void remove(int i, int count) //从vector中移除从 i开始的count个元素
void pop_back() //删除vector中最后一个元素
void pop_front() //删除vector中第一个元素 QVectorint v; v.insert(0, 1); v.insert(1, 2, 2); v.replace(2, 3); v 1 1 1; v.remove(0); qDebug() v; v.remove(1, 3); qDebug() v; QVector应用 QMap简介
头文件#includeQMap
模块 QT core
功能QMap存储(键、值)对并提供与键相关联的值的快速查找基于红黑树实现std::map也是基于红黑树实现 QMap和 QHash差异
1QHash的查找速度比QMap要快
2当在QHash上迭代时项的顺序是任意的。使用QMap项目总是按键排序
3QHash的键类型必须提供operator() 和全局qHash(Key) 函数。QMap的键类型必须提供operator()以指定全序顺序。从Qt 5.8.1开始使用指针类型作为键也是安全的即使底层operator()不提供全序顺序。 常用接口
判断容器是否为空
bool QMap::isEmpty() const判断容器是否为空 QMapint, QString m; qDebug() m.isEmpty(); 查询元素个数
count() 、size() //没有length函数 QMapint, QString m; m[0] one; m[1] two; qDebug() m.size(); qDebug() m.count(); 访问数据
通过key访问value QMapint, QString m; m[0] one; m[1] two; qDebug() m[0]; qDebug() m.value(1); 插入数据
可以用运算符[ ]插入一对 (key,value) 到QMap对象中 QMapint, QString m; m[0] one; m[1] two; qDebug() m;
QMap::iterator QMap::insert(const Key key, const T value)插入一个带有键key和值value的新项
如果已经存在键为key的项则该项的值将替换为value
如果有多个键为key的项则最近插入的项的值将替换为value QMapint, QString m; m[0] one; m[1] two; m.insert(2, three); qDebug() m;
QMap::iterator QMap::insertMulti(const Key key, const T value)插入一个带有键key和值value的新项。
如果映射中已经存在具有相同键的项则该函数将简单地创建一个新项。(此行为不同于insert()后者覆盖现有项的值) QMapint, QString m; m[0] one; m[1] two; m.insert(2, three); qDebug() m; m.insertMulti(2, four); qDebug() m; 修改数据
可以直接通过key访问对应value进行修改 QMapint, QString m; m[0] one; m[1] two; m[0] three; qDebug() m; 获取对应key的迭代器
QMap::iterator QMap::find(const Key key)返回一个迭代器该迭代器指向map中键为key的项
如果map包含多个传入键的项则此函数返回一个迭代器该迭代器指向最近插入的项。其他值可以通过对迭代器自增来访问 QMapint, QString m; m[0] one; m[1] two; QMapint, QString::iterator it m.find(1); qDebug() *it; 查看QMap中是否包含某一元素
bool QMap::contains(const Key key) const如果map包含键为key的项则返回true;否则返回false。 QMapint, QString m; m[0] one; m[1] two; qDebug() m.contains(0); 删除数据
int QMap::remove(const Key key)从map中删除所有带有key的项目。返回删除的项数通常为1但如果键不在map中则为0或者如果已对键使用insertMulti()则为 1 QMapint, QString m; m[0] one; m[1] two; m.insertMulti(0, three); qDebug() m.remove(0); qDebug() m; QMap应用 employee.h #ifndef EMPLOYEE_H #define EMPLOYEE_H #include QDebug class Human { public: Human(){} Human(const int age): age(age) { } private: int age; friend inline QDebug operator(QDebug debug, const Human h); friend inline bool operator(const Human h1, const Human h2); }; inline QDebug operator(QDebug debug, const Human h) { return (debug h.age); } inline bool operator(const Human h1, const Human h2) { return h1.age h2.age; } #endif // EMPLOYEE_H Human h1(22); Human h2(18); QMapHuman, QString m; m[h1] 小王; m[h2] 小张; qDebug() m;