顺序容器(操作)--C++复习(10)

一、操作

添加删除元素、设置容器大小以及获取容器元素。

二、容器类型别名(常用)

size_type:无符号整型,容器长度

iterator:迭代器;const_iterator:只读容器迭代器

value_type:元素类型

reference:元素引用

其他如逆序、迭代器差值等等。

示例:

1 void test()
2 {
3     int i;
4     vector<int>::size_type t;
5     vector<int>::iterator i;
6     ....
7 }

三、begin()和end()成员

c.begin():指向第一个元素的迭代器

c.end():指向最后一个元素后的迭代器

示例:

1 void test()
2 {
3     vector<int> v;
4     vector<int>::iterator it1=v.begin();
5     vector<int>::iterator it2=v.end();
6 }

四、插入操作

c.insert(p,e):在指定位置插入

c.insert(p,n,e):在指定位置插入n个元素

c.insert(p,b,e):在指定位置插入b迭代器开始e结束个元素

注意添加或删除元素会使迭代器失效

示例:

 1 void test()
 2 {
 3
 4     vector<int>v;
 5     v.push_back(2);
 6     v.push_back(3);
 7
 8     vector<int>::iterator it = v.begin() ;
 9     v.insert(it, 2, 5);
10     for (auto s= v.begin(); s != v.end(); s++)
11     {
12         cout << *s << endl;
13     }
14
15
16     //vector<int>::iterator it2 = v.begin();
17     //vector<int>::iterator it2 = v.insert(v.begin(), 2, 5);该种表述会报错
18 }

五、容器大小操作

c.size():返回容器大小;c::size_type类型

c.max_size():返回容器中最多可容纳元素个数

c.empty():判断容器是否为空

c.resize(n):调整容器的大小小为n

c.resize(n,t):调整容器的大小小为n,所有新添加的元素都为t

示例:

 1 void test2()
 2 {
 3     vector<int>v;
 4     v.push_back(1);
 5     v.push_back(2);
 6     v.push_back(3);
 7
 8     vector<int>::size_type s = v.size();
 9     cout << s << endl;
10
11     vector<int>::size_type max = v.max_size();
12     cout << max << endl;
13
14     v.resize(5, -1);
15     s = v.size();
16     cout << s << endl;
17     for (auto s = v.begin(); s != v.end(); s++)
18     {
19         cout << *s << endl;
20     }
21
22 }

六、访问元素

c.front():返回第一个元素的引用

c.back():返回最后一个元素的引用

c[n]/c.at(n):n索引位置的引用(仅适用于vector和deque)

示例:

 1 void test3()
 2 {
 3     vector<int>v;
 4     v.push_back(1);
 5     v.push_back(2);
 6     v.push_back(3);
 7
 8     int v1 = v.front();
 9     cout << v1 << endl;
10
11     v1 = *v.begin();//先获得指针,再解引用
12     cout << v1 << endl;
13
14     vector<int>::reference v2 = v.back();
15     cout << v2 << endl;
16
17     cout << v[1] << endl;
18     cout << v.at(1) << endl;
19
20 }

七、删除元素

c.erase(p):删除迭代器p所指向的元素,返回一个迭代器,指向删除之后的元素

c.erase(b,e):删除b和e迭代器之间的元素,返回一个迭代器,指向删除之后的元素

c.clear():删除所有元素

c.pop_back():删除最后一个元素;c.pop_front():删除第一个元素

示例:

 1 void test4()
 2 {
 3     vector<int>v;
 4     v.push_back(1);
 5     v.push_back(2);
 6     v.push_back(3);
 7     v.push_back(4);
 8     v.push_back(5);
 9     v.push_back(6);
10     v.push_back(7);
11     cout << v.size() << endl;
12
13     v.erase(v.begin());//删除第一个
14     for (auto s = v.begin(); s != v.end(); s++)
15     {
16         cout << *s << endl;
17     }
18
19     v.erase(v.begin(), v.begin()+3);//删除第一个到第三个
20     for (auto s = v.begin(); s != v.end(); s++)
21     {
22         cout << *s << endl;
23     }
24
25     v.pop_back();//删除最后一个
26     for (auto s = v.begin(); s != v.end(); s++)
27     {
28         cout << *s << endl;
29     }
30
31     v.clear();//清空,没有元素
32     cout << v.size() << endl;
33
34
35 }

八、赋值和交换

c1=c2;删除c1的所有元素,将c2中元素复制到c1

c1.swap(c2);c1、c2交换元素

c.assign(b,e);使用b和e之间的迭代器来重新设置c中的元素

c.assign(n,t);重新设置为存储n个值的t元素

九、vector的内存分配

示例:

 1 void test5()
 2 {
 3     vector<int>v;
 4     cout << v.size() << endl;//显示为0
 5     cout << v.capacity() << endl;//显示为0
 6     cout << "***********"<< endl;
 7     for (int i = 0; i <= 10; i++)
 8         v.push_back(i);
 9     //预留空间
10     v.reserve(30);
11     //当前大小
12     cout << v.size() << endl;//显示为11
13     //空间大小
14     cout << v.capacity() << endl;//显示为30
15
16 }

原文地址:https://www.cnblogs.com/jiang-021/p/11607955.html

时间: 2024-10-15 06:47:22

顺序容器(操作)--C++复习(10)的相关文章

【足迹C++primer】26、顺序容器操作

顺序容器操作 向顺序容器添加元素 forward_list //有自己专有版本的insert和emplace: forward_list //不支持push_back和emplace_back vector, string //不支持push_front和emplace_front c.push_back(t), c.emplace_back(args) //在c的尾部创建一个值为t的或者由args创建的元素,返回void c.push_front(t), c.emplace_back(args

顺序容器操作fatal error C1001:warning D9028

1.向顺序容器中添加元素错误程序: vector<int> vec1{ 5, 6, 7, 8, 9 }; vector<int> vec2{ 3, 4, 5, 6, 7 }; list<int> ilist{ 1, 2, 3, 4, 5 }; //1.在尾部创建一个值t或者args,返回为void //1.1push_back(t) //1.2.emplace_back(args) vec1.push_back(10); for (auto i : vec1) cout

C++学习之顺序容器(一)

一个容器就是一些特定类型对象的集合.顺序容器(sequential container)为我们提供了控制元素存储和访问顺序的能力.这种顺序不依赖于元素的值,而是与元素加入容器时的位置向对应. 顺序容器类型概述 容器名称 容器特性 访问特性 修改特性 vector 可变大小数组 随机 尾部插入/删除速度快 deque 双端队列 随机 头尾位置插入/删除速度快 list 双向链表 双向顺序 任意位置插入/删除均很快 forward_list 单项链表 单向顺序 任意位置插入/删除均很快 array

C++primer笔记:IO库、顺序容器、关联容器、面向对象、泛型算法、模板和泛型编程

第八章:IO库不直接来处理输入输出,而是通过在标准库中的一些类型来处理io istream ostream cin cout cerr getline函数 iostream:定义了用于基本读写流的基本类型 fstream: 定义了基本的读写命名文件的类型 sstream:定义了读写内存的string对象的类型 IO对象无拷贝或者赋值 条件状态:IO定义了一些函数和标志,可以帮助我们访问和操作流得条件状态 strm::iostate 条件状态的完整功能 strm::badbit 流已崩溃 strm

C++ Primer笔记5_STL之顺序容器

1.STL(Standard Template Library) 标准模板库.从根本上说,STL是一些"容器"的集合,这些"容器"有list, vector,set,map等,STL也是算法和其它一些组件的集合.这里的"容器"和算法的集合指的是世界上很多聪明人很多年的杰作.每一个C++程序员都应该好好学习STL.大体上包括container(容器).algorithm(算法)和iterator(迭代器),容器和算法通过迭代器可以进行无缝连接. 2

第9章 顺序容器

9.1顺序容器概述 vector       大小可变的数组.支持快速随机访问,在非尾部插入或者删除元素较慢. deque       双端队列.支持快速随机访问,在头尾插入删除速度很快. list             双向链表,只支持双向顺序访问.在当前位置插入删除操作速度很快. forward_list     单向链表.只支持单向顺序访问.在当前位置插入删除操作速度很快. array         固定大小数组.支持快速随机访问,不能添加删除元素. string        与ve

c/c++ 标准顺序容器 容器的访问,删除 操作

c/c++ 标准顺序容器 容器的访问,删除 操作 pop_front:vector,string不支持 pop_back:forward_list不支持 知识点 1,front, back, at 成员函数的使用,对应代码里的test1 2,删除最后一个元素pop_back, 删除第一个元素pop_front,对应代码里的test2 3,删除指定位置的元素erase,并返回下一位置的迭代器 ,对应代码里的test3 #include <vector> #include <string&g

c++顺序容器(1)

1.顺序容器 C++标准库中有三种顺序容器:vector list deque vector:支持快速随机访问,在尾部之外的位置插入或删除元素可能较慢 list:支持快速插入/删除,只支持双向顺序访问 deque:双端队列,支持快速随机访问,头尾插入和删除速度很快 还有array(不能添加和删除),forward_list,String(保存字符) 2.哪种顺序容器好? 通常,使用vector. (1)如果要求在容器的中间插入和删除元素,应使用list或forward_list. (2)如果只在

C++primer(第五版)第九章 顺序容器(容器的运用及其部分习题解答,C++11特性总结,重点章节内容较多)

顺序容器:为程序员提供了控制元素存储和访问顺序的能力.(无序容器)           1.顺序容器的概述           A.顺序容器的类型           vector:可变大小数组.支持快速随机访问.在尾部之外的位置插入或删除元素可能很慢.          deque:双端队列.支持快速随机访问.在头尾位置插入/删除速度很快.           list:双向链表.只支持双向顺序访问.在list中任何位置进行插入/删除操作速度都很快.          forword_list

顺序容器(二)--《C++ primer》

 前面已经简单介绍了顺序容器的定义以及一些操作,包括(添加,删除等),下面主要集中以代码的形式简单介绍一下相关用法,首先创建并初始化vector对象,一般有两大类: 1.分配指定数目元素,并初始化(分两种)          vector<int> ivec(10): vector<int> ivec(10,1): 2.把vecotr对象初始化为一段元素的副本 int a[10]={1,2,3,4,5,6,7,8,9,10}: vector<int> ivec(a,