标准模板库(STL)之 vector 列传 (二)

标准模板库(STL)之 vector 列传

  • 两个 vector 的相等性判断,v1 == v2对容器内的每一个元素,调用 ==

1. 两种搭配

  • coll.reserve() ⇒ coll.push_back()

    coll.reserve()只预留空间,不进行初始化,也即coll.reserve()完了之后容器的size()仍为0,

  • coll.resize() ⇒ coll[i]

    std::vector<int> v;
    v.resize(10);
                            // 没有这句话
                            // 或者使用 v.reserve(10)
                            // 编译器都会报错
    for (size_t i = 0; i < 10; ++i)
        v[i] = i;

2. vector 为空的判断

也即coll.empty()的内部实现:

bool empty() const
{
    return first == last;
}

3. 所能容纳的数据类型

vector这般的模板容器std::vector<T>,即是什么类型的对象都可往里装,但一个容器实例仅可存储同一数据类型的数据,也即std::vector<T>是非异质型(non-heterogeneous)容器;

4. push_back 一个新元素

对于一个容器,调用其成员push_back函数,添加新的数据成员,则新添加的数据的位置及其对应的迭代器为:

  • 下标位置

    pos = coll.size()-1;
  • 迭代器为:

    ite = coll.end() - 1;

5 .resize() 的两个重载

void resize(size_type _Newsize);
                    // 调用成员的默认构造
void resize(size_type _Newsize, const value_type& _Val);
                    // 并指定初值

比如,一种有些随机变量性质的初始化的方式:

coll.resize(sz, 1./sz);

6. .clear()的含义

  • size 为 0
  • capacity 不变

所以对一个容器调用其.clear()成员函数之后,该容器会进入到一种类似容器在初始化之前首先.reserve()后的结果。

也即:

std::vector<int> coll = {1, 2, 3};
coll.clear();
                // size == 0
                // capacity == 3
std::vector<int> coll2;
coll2.reserve();
                // size == 0
                // capacity == 3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值