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 2023-04-04 16:52  糊涂松鼠  阅读(12)  评论(0编辑  收藏  举报