gp2000

导航

统计

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的带符号整型数。

     介绍了一下二分搜索的想法,但是其实现前提是序列为有序的。

    

posted on   糊涂松鼠  阅读(17)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示