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中各种容器的简单特点

(1) vector 内部数据结构:数组。 随机访问每个元素,所需要的时间为常量。 在末尾增加或删除元素所需时间与元素数目无关,在中间或开头增加或删除元素所需时间随元素数目呈线性变化。 可动态...
  • cc946079647
  • cc946079647
  • 2014年07月17日 13:32
  • 1141

STL中常用容器的选择

今天去面试问到了stl的常用容器问题,但是提前没准备,平时也没太在意,还有就是忘了。总之,回答得很狼狈。 希望能在这里整理一下: 1.vector 2.deque 3.list 4.s...
  • cz168love
  • cz168love
  • 2015年05月28日 20:02
  • 1124

STL学习—STL六大组件

STL六大组件 STL主要提供6大组件: 1、容器(container):各种数据结构,如map、vector、list、deque、set等,用来存放数据; 2、算法(algorithm):各...
  • u010275850
  • u010275850
  • 2016年07月18日 00:03
  • 242

STL容器的适用情况和缺点

一.各种容器的特性 vector 典型的序列容器,C++标准严格要求次容器的实现内存必须是连续的,唯一可以和标准C兼容的stl容器,任意元素的读取、修改具有常数时间...
  • qq_14898543
  • qq_14898543
  • 2016年05月12日 09:56
  • 557

初探STL之容器适配器

容器适配器   用某种顺序容器来实现
  • wxwd1
  • wxwd1
  • 2014年07月10日 13:20
  • 1217

STL中list的容器使用介绍

STL中list的使用:   STL中的list就是一双向链表,可高效地进行插入删除元素。现总结一下它的操作。   文中所用到两个list对象c1,c2分别有元素c1(10,20,30)  c2(40...
  • rainbow693
  • rainbow693
  • 2016年06月10日 11:22
  • 716

STL学习系列之六—容器适配器

STL学习系列之六—容器适配器 STL提供了三种容器适配器:stack,queue,priority_queue。 适配器并不是第一类容器,因为它们并没有提供与元素的保存形式有关的真正数据结构实现...
  • feitianxuxue
  • feitianxuxue
  • 2012年02月11日 11:49
  • 7798

STL学习记录(一):STL简介

STL简介STL(The Stadard Template Librara)是C++学习中必须掌握的库。它提供了高效率的算来解决对一堆数据的管理,它让程序员能够直接获得数据结构和算法领域改进带来的好处...
  • ddml1314
  • ddml1314
  • 2015年04月27日 21:55
  • 284

C++ STL基本容器的使用

C++中有两种类型的容器:顺序容器和关联容器。顺序容器主要有vector、list、deque等。其中vector表示一段连续的内存,基于数组实现,list表示非连续的内存,基于链表实现,deque与...
  • conanswp
  • conanswp
  • 2014年04月09日 21:01
  • 53121

STL中的有序容器

map 更多 C++ maps是一种关联式容器,包含“关键字/值”对。 map的基本操作函数: begin() 返回指向map头部的迭代器 clear() ...
  • jason_cuijiahui
  • jason_cuijiahui
  • 2018年01月10日 14:20
  • 39
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STL 中的容器们(三)
举报原因:
原因补充:

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