[C++STL] vector 容器的入门
vector容器的入门
#include<vector>
创建vector容器的几种方式
-
数据类型可以是结构体,也能是另外一个容器
-
vector 的初始化:
(1) 创建并声明大小
vector<数据类型>name(size);//size大小
(2) 声明大小,并且附上初始值。
vector<数据类型>v (size,value);//size大小 value每个元素的初始值(都可以用变量表示)
(3) 创建时,声明初始值(类比数组)
-> vector<int> name {1,3,5,7};
-> vector<int> name1(name2.begin(),name2.begin+3);//定义了name1值为name2中第0个到第2个(共3个)元素
-> int b[7]={1,2,3,4,5,9,8};
vector<int> name(b,b+7); //从数组中获得初值
-
二维数组:
vector<?>v;
声明10*5固定大小的二维数组并且都赋值为1
vector< vector<int> > v4(10, vector<int>(5,1));
遍历二维数组
for (int i = 0; i < v4.size(); i++) {
//v4[i]是长度为5的数组
for (int j = 0; j < v4[i].size(); j++) {
cout << v4[i][j];//vector可以使用迭代器访问或下标访问(输出)
}
cout << endl;
}
顺序访问vector的几种方式:
-
在向量a中添加元素
(1) 简单
vector<int> a;
for(int i=0;i<10;i++)
a.push_back(i);
(2) 从数组中选择元素向向量中添加
int a[6]={1,2,3,4,5,6};
vector<int> b;
for(int i=1;i<=4;i++)
b.push_back(a[i]);
(3) 从现有向量中选择元素向向量中添加
int a[6]={1,2,3,4,5,6};
vector<int> b;
vector<int> c(a,a+4);
for(vector<int>::iterator it=c.begin();it<c.end();it++)
b.push_back(*it);//迭代器访问
(4) 从文件中读取元素向向量中添加
ifstream in("data.txt");
vector<int> a;
for(int i; in>>i)
a.push_back(i);
(5) 【误区】
vector<int> a;
for(int i=0;i<10;i++)
a[i]=i;//下标只能用于获取已存在的元素,不能用于赋值。
————————————————————————————————
原文链接:https://blog.csdn.net/qq_42188312/article/details/102450665
成员函数
函数 | 作用 |
---|---|
back() | 返回最后一个元素的引用 |
front() | 返回第一个元素的引用 |
begin() | 返回第一个元素的迭代器 |
end() | 返回最后一个元素的后一个位置的迭代器 |
empty() | 判断a是否为空,空则返回ture,不空则返回false |
push_back(元素) | 在序列尾部添加一个元素 |
pop_back() | 移出序列尾部的元素。 |
emplace_back() | vector 容器的尾部添加一个元素。(c++11才有) |
erase(迭代器) | 移除一个或一段元素。一段元素的话区间为 [a,b) |
clear() | 移除所有元素,容器大小为0。 |
resize() | 重新改变容器的容量 |
size() | 返回实际元素的个数 |
insert(迭代器,元素) | 在迭代器位置插入元素 |
assign(个数a, 元素b) | 使容器只含a个元素b |
几种重要算法
(1)sort(a.begin(),a.end()); //默认从小到大排列(前闭后开) (2)reverse(a.begin(),a.end()); //元素倒置(前闭后开) (3)copy(a.begin(),a.end(),b.begin()+1); //从b.begin()+1的位置(包括它)开始复制,覆盖掉原有元素(前闭后开) (4)find(a.begin(),a.end(),10); //查找元素10,若存在返回其在向量中的位置
制作:BDT20040