STL 中的容器们(三)

原创 2015年11月19日 15:29:04

二维vector的初始化

使用vector::vector(count, value)的构造函数来接收一个大小参数以及一个默认值。

vector<vector<int>> Mat(10, vector<int>(10, 8));

我们要创建一个 3 行 4 列的二维向量,全部元素初始化为 0;

std::vector<std::vector<int>> mat(3, std::vector<int>(4, 0));

我们也可使用C++11引入的uniform initialization

vector<vector<int>> Mat{{1, 1, 1}, {2, 2, 2}};

set的添加动作

std::set<std::string> ss;
ss.insert("hello");
ss.insert("hello");
ss.insert("world");

提供 find 成员方法的容器

  • (1)string
    返回值为size_type,也即整型值

  • (2)set

  • (3)map

    std::map<K, V>::const_ietrator ite = m.find(val);
    return ite->second;

vector::resize() vs vector::reserve()

  • resize()不仅分配内存,而且创建实例
  • reserve()仅仅分配内存,不进行初始化

  • resize()影响size(),reserve()只影响capacity()

  • resize()可大可小,长度变小时,调用后添加进的元素的析构函数;

#include <iostream>
#include <vector>
using namespace std;

class A
{
public:
    A() { cout << "A::A()" << endl;}
    ~A() { cout << "A::~A()" << endl;}
};

int main(int, char**)
{
    vector<A> as, bs;
    as.resize(3);
                    // A::A()
                    // A::A()
                    // A::A()
    bs.reserve(5);
                    // 什么也没有输出

    as.resize(1);
                    // 调用两次析构函数,使size为1
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

STL中序列式容器之三deque

vector是单向开口的连续线性空间,而deque则是一种双向开口的连续线性空间。所谓双向开口,意思是可以在头尾两端都可以做元素的插入与删除操作。vector当然也可以在头尾两端进行操作(从技术观点)...

STL 笔记(三) 容器适配器 stack、queue、priority_queue

栈 stack 是一种先进后出的(First In Last Out, FILO)的数据结构。在 STL中,其底层容器默认使用的是 deque, 也可以自己指定用 vector 或 list容器,然后...

C++ STL学习之三:序列式容器deque深入学习

deque是双端队列,它的空间构造并非一个vector式的长数组,而是“分段存储,整体维护”的方式;STL允许在deque中任意位置操作元素(删除添加)(这超出了deque的概念,最原始的deque将...

【C++】STL常用容器总结之三:向量vector

4、向量vectorVector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。Vector的数据安排及操作方式与array非常相似,唯一的差别在于array是静态空间,一旦配置了就不能改...

STL容器(三)——对map排序

STL容器(三)——对map排序 对于map的排序问题,主要分为两部分:根据key排序;根据value排序。下面我们就分别说一下~ 1. 根据key进行排序 map默认...

STL 源码剖析读书笔记三:序列式容器之 vector、list

STL 序列式容器 vector list

【C++ STL学习之三】容器deque深入学习

C++ STL容器deque和vector很类似,也是采用动态数组来管理元素。 使用deque之前需包含头文件: #include 它是定义在命名空间std内的一个class temp...

从零开始学C++之STL(三):迭代器类vector::iterator 和 vector::reverse_iterator 的实现、迭代器类型、常用的容器成员

一、迭代器 迭代器是泛型指针 普通指针可以指向内存中的一个地址 迭代器可以指向容器中的一个位置 STL的每一个容器类模版中,都定义了一组对应的迭代器类。使用迭代器,算法函数可以访问容器中指定位置...

泛型编程与STL(三):容器

一.何为容器 二.为什么容器 三.如何使用容器 四.深入容器 一.何为容器        在STL中。算法,迭代器,容器是三个紧密联系的组件。容器提供保存数据的地方,迭代器提供对容器...

C++ STL学习之三:容器deque深入学习

转自:http://www.2cto.com/kf/201204/126761.html C++ STL容器deque和vector很类似,也是采用动态数组来管理元素。 使用deque之前...
  • daisyZH
  • daisyZH
  • 2013年02月21日 20:05
  • 161
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STL 中的容器们(三)
举报原因:
原因补充:

(最多只允许输入30个字)