当前位置: 首页 > wzjs >正文

做网站,就上凡科建站搜索引擎优化规则

做网站,就上凡科建站,搜索引擎优化规则,摄影作品网站推荐,网站怎么做移动端的介绍 除去向 vector 添加元素(如 push_back)之外,vector 还提供了许多其他操作,这些操作大多与 string 的操作类似。通过掌握这些操作,我们可以方便地查询、修改和比较 vector 中的元素,从而构建灵活、高效…

介绍

除去向 vector 添加元素(如 push_back)之外,vector 还提供了许多其他操作,这些操作大多与 string 的操作类似。通过掌握这些操作,我们可以方便地查询、修改和比较 vector 中的元素,从而构建灵活、高效的数据结构。下表总结了 vector 支持的一些常见操作:

操作说明
v.empty()如果 v 不包含任何元素,则返回 true;否则返回 false。
v.size()返回 v 中元素的个数,其返回值类型为 vector::size_type。
v.push_back(t)将值为 t 的元素添加到 v 的尾端。
v[n]返回 v 中第 n 个位置上元素的引用,下标从 0 开始。
v1 = v2用 v2 中元素的副本替换 v1 中原有的所有元素。
v1 = {a, b, c, ...}使用列表中元素的副本替换 v1 中原有的所有元素。
v1 == v2 / v1 != v2当且仅当两个 vector 的元素个数相同且对应位置的元素都相等时,v1 和 v2 才相等。
<, <=, >, >=按字典顺序比较两个 vector,规则与 string 相似:若两个 vector 在对应位置的元素全部相同,则元素较少者视为较小;否则以第一对不相同元素的比较结果为准。

下面我们依次介绍这些操作及其使用方法。

1. 查询与修改 vector 中的元素

1.1 empty() 与 size()

  • empty()
    检查 vector 是否为空。若 vector 没有任何元素,则返回 true,否则返回 false。

  • size()
    返回 vector 中当前元素的个数。返回类型通常为 vector::size_type,一般为无符号整型。

示例:

#include <iostream>
#include <vector>
using std::vector;
using std::cout;
using std::endl;int main() {vector<int> v;  // 默认初始化为空 vectorif (v.empty())cout << "v is empty." << endl;v.push_back(10);v.push_back(20);cout << "v size: " << v.size() << endl;  // 输出 v 的元素个数return 0;
}

1.2 访问元素:下标运算符 []

使用下标运算符([])可以随机访问 vector 中指定位置的元素。注意,下标从 0 开始。例如:

#include <iostream>
#include <vector>
using std::vector;
using std::cout;
using std::endl;int main() {vector<int> v = { 1, 2, 3, 4, 5 };cout << "The third element is: " << v[2] << endl; // 输出 3// 修改元素v[2] = v[2] * v[2]; // 将第三个元素改为其平方cout << "After modification, the third element is: " << v[2] << endl;return 0;
}

注意:
使用下标运算符时必须确保下标在合法范围内。如果访问不存在的元素(例如对空 vector 或超出范围的索引进行操作),将产生未定义行为,这可能引发缓冲区溢出问题。

2. 遍历 vector 元素

2.1 使用范围 for 语句

范围 for 语句可以用来遍历 vector 中的所有元素。对于只读操作,直接使用 auto 即可;若需要修改元素,必须使用引用:

只读遍历
#include <iostream>
#include <vector>
using std::vector;
using std::cout;
using std::endl;int main() {vector<int> v = {1, 2, 3, 4, 5};// 输出每个元素for (auto i : v) {cout << i << " ";}cout << endl;return 0;
}
修改元素
#include <iostream>
#include <vector>
using std::vector;
using std::cout;
using std::endl;int main() {vector<int> v = {1, 2, 3, 4, 5};// 将 vector 中每个元素乘以自身for (auto &i : v) {  // 注意:必须使用引用i *= i;}// 输出修改后的元素for (auto i : v) {cout << i << " ";}cout << endl;return 0;
}

3. vector 对象的比较操作

vector 支持相等性和关系运算符,这些运算符的语义与 string 类似:

  • == 和 !=
    两个 vector 相等当且仅当它们的元素个数相同且对应位置的元素都相等。
  • <, <=, >, >=
    按字典顺序比较两个 vector。如果两个 vector 在对应位置上元素完全相同,则较短的 vector 被认为较小;如果存在第一对不相同的元素,则比较该对元素的大小。

示例:

#include <iostream>
#include <vector>
using std::vector;
using std::cout;
using std::endl;int main() {vector<int> v1 = {1, 2, 3};vector<int> v2 = {1, 2, 3};vector<int> v3 = {1, 2, 4};if (v1 == v2)cout << "v1 and v2 are equal." << endl;if (v1 < v3)cout << "v1 is less than v3." << endl;return 0;
}

4. 赋值和替换

vector 支持赋值操作符,用于将一个 vector 的内容替换为另一个 vector 的元素副本:

#include <iostream>
#include <vector>
using std::vector;
using std::cout;
using std::endl;int main() {vector<int> v1 = {1, 2, 3};vector<int> v2 = {4, 5, 6};v1 = v2;  // v1 的元素全部被替换为 v2 的元素cout << "After assignment, v1: ";for (auto i : v1)cout << i << " ";cout << endl;return 0;
}

此外,也可以使用列表初始化对 vector 进行赋值(C++11 起支持):

#include <iostream>
#include <vector>
using std::vector;
using std::cout;
using std::endl;int main() {vector<int> v = {1, 2, 3};v = {7, 8, 9};  // 将 v 中的内容替换为 7, 8, 9 的副本cout << "After list-assignment, v: ";for (auto i : v)cout << i << " ";cout << endl;return 0;
}

5. 关于下标操作的警告

  • 下标运算符只能访问已存在的元素
    下标形式仅适用于访问或修改 vector 内已存在的元素,而不能用于添加元素。例如,下面的代码试图通过下标访问空 vector 的元素,将会导致错误:

    #include <vector>
    #include <iostream>
    using std::vector;
    using std::cout;
    using std::endl;int main() {vector<int> ivec;  // 空 vector// 下面的操作是错误的,因为 ivec 不包含任何元素cout << ivec[0];return 0;
    }
    
  • 添加元素必须使用 push_back 或类似成员函数
    正确的添加方式:

    for (int i = 0; i < 10; ++i)ivec.push_back(i);  // 依次添加元素
    

6. 总结

  • 常用操作:

    • empty()size() 用于检查 vector 是否为空及获取元素数量。
    • push_back(t) 用于在 vector 尾端添加一个新元素。
    • 下标运算符 v[n] 用于访问已存在的元素(注意:仅在保证索引合法时使用)。
    • 赋值操作符和列表初始化可用于替换 vector 中所有元素。
    • 相等性和关系运算符基于字典顺序比较 vector 中的元素。
  • 遍历与修改:

    • 使用范围 for 循环可以简洁地遍历 vector,但若在循环中修改容器大小(如 push_back),应避免使用范围 for。
    • 对于需要修改元素的操作,建议使用基于引用的范围 for。
  • 下标访问的注意事项:

    • 只能访问已存在的元素,不能用下标直接添加新元素。使用 push_back、insert 等成员函数来添加。

掌握 vector 的这些常用操作,不仅有助于更高效地管理动态数组,还能防止因错误访问元素而引起安全问题(例如缓冲区溢出)。希望这篇全面的讲解能帮助你在实际编程中熟练使用 vector。

参考资料

  • cppreference.com 关于 std::vector 的详细文档
  • 各大 C++ 编码规范(如 Google C++ Style Guide)中对容器操作的建议

通过对 vector 其他操作的全面解析,你可以更好地掌握如何查询、修改和比较 vector 中的元素,从而编写出既健壮又高效的 C++ 程序。

http://www.dtcms.com/wzjs/172875.html

相关文章:

  • 媒体邀约网络seo公司
  • 重庆市建设银行网站首页网站推广优化招聘
  • 网站出租目录做菠菜 有什么坏处培训机构招生7个方法
  • 法律垂直问答网站怎样做网站优化排名推荐
  • 做网站可以用什么软件seo的中文含义是什么
  • 如何拥有自己的私人网站平台重庆seo
  • 对中国建设银行网站的缺点朋友圈广告30元 1000次
  • 做hmtl的基本网站百度贴吧网页入口
  • 网站设计参考文献有哪些免费推广的预期效果
  • wordpress添加变量优化方案丛书官网
  • 网页视频下载软件手机版seo从零开始到精通200讲解
  • 著名的网站建设平台免费seo关键词优化排名
  • 太原哪家网站建设公司好天猫seo搜索优化
  • 东营网站建设公司惠州疫情最新情况
  • 桐城市建设局网站培训学校管理系统
  • h5 响应式手机网站淘宝店铺怎么推广和引流
  • 无锡建设网站的公司百度官方版
  • 网站项目运营方案网店运营的工作内容
  • 如何将自己做的网页做成网站考拉seo
  • 怎么做网站小编企业培训课程有哪些内容
  • wordpress 新安装 慢seo优化网站快速排名
  • 淄博网站制作定制改版西安百度代运营
  • 网站qq线客服咋做百度浏览器网页版入口
  • 网站建设 钱网址服务器查询
  • 建立免费网站的步骤免费发布平台
  • 大数据营销系统软件seo站长工具下载
  • 怎么用vscode做网站重庆森林影评
  • 那家财经网站做的好百度网页pc版登录
  • 长沙低价网站建设如何开发自己的小程序
  • 微信公众号自定义菜单wordpress网站快速排名优化