【足迹C++primer】25、容器库概览

来源:互联网 发布:大屏幕拼接控制软件 编辑:程序博客网 时间:2024/05/22 02:34

容器库概览

首先顺序容器几乎可以保存任意类型的元素。
vector<vector<string>> lines;   //vector的vector

容器类型

iterator迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。

const_iterator对象可以用于const vector 或非 const vector,它自身的值可以改(可以指向其他元素),但不能改写其指向的元素值.

size_type由string类类型和vector类类型定义的类型,用以保存任意string对象或vector对象的长度,标准库类型将size_type定义为unsigned类型

difference_type是描述序列(容器)中两个元素地址之间差异的有符号整数类型;

value_type它是一个typedef。是迭代器所指对象的类型

reference元素的左值类型;与value_type&含义相同

const_reference元素的const左值类型(即const value_type&)

迭代器

这里记住,c.end()是指向尾部元素后面那个位置的!!!

while(begin != end){    *begin = val;   //范围不空,所以begin指向第一个元素    ++begin;        //移动迭代器,获取下一个元素}

 容器定义和初始化

//每个容器有三个元素,用给定的初始化器进行初始化list<string> authors={"Milton", "Shakespeare", "Austen"};vector<const char*> articles={"a", "an", "the"};list<string> list2(authors);    //正确:类型匹配deque<string> authList(authors);    //错误:容器类型不匹配vector<string> words(articles);     //错误:容器类型必须匹配

标准库array具有固定大小

和内置数组一样,标准库array大大小也是类型的一部分。
array<int, 42>  //类型为:保存42个int的数组array<string, 10>   //保存10个string类型的数组

但是我们不能对内置数组类型进行拷贝或对象赋值操作,但是array并无此限制

使用assign(仅顺序容器)

这个函数允许我们从不同的但相容的类型赋值,或者从容器的一个子序列赋值













0 0
原创粉丝点击