c++primer-3.3标准库类型vector
vector
vector是模板不是类型
1、定义和初始化对象
列表初始化不能用圆括号,只能用花括号。
当你在花括号中的元素无法执行列表初始化时,会考虑用这样的值来构造vector对象。例如下面这样的情况。
vector<string> v{10}; //在这这个10就不是说明他初始化对象的值为10,而是指创建了10个vector对象。原因在于这里vector对象数据类型为string,因此无法用10进行初始化。
3.3.3 其他vector操作
vector中的size成员返回值类型是由vector定义的size_type类型。
vector对象(以及string对象)的下标运算不能用来添加新的元素。
3.4 迭代器介绍
string也可以使用迭代器,迭代器用来访问容器中的元素。迭代器有有效和无效。
3.4.1 使用迭代器
end返回指向容器(或string对象)“尾元素的下一位置”。end成员返回的迭代器被称作尾后迭代器。
如果容器为空,则begin和end返回的迭代器都是尾后迭代器。
迭代器类型:iterator 和 const_iterator
c++11标准引入了cbegin和cend,无论容器或者string对象类型是否是常量,都将返回const_iterator
在这书中提到任何使用迭代器的循环体,都不要像迭代器所属的容器添加元素。
思考:1、任何可能改变vector对象容量的操作都会使该vector对象的迭代器失效。
2、不能再范围for循环中向vector对象添加元素。
3.4.2 迭代器运算
两个迭代器相减得到的是两个迭代器的距离,类型是difference_type的带符号整型数。
介绍了一下二分搜索的想法,但是其实现前提是序列为有序的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理