- STL:标准模板库(一些容器的集合)
- 容器:用来管理一类对象的集合。可以说数组也是一个容器。
- 常见的容器:向量、栈、队列、优先队列、链表、集合、映射
- 迭代器:用来遍历对象集合的元素,或者说迭代器是用来遍历容器中元素的工具。需要注意的是并不是所有的容器都支持迭代器,例如需要遵循先进后出原则的栈就不支持迭代器。
概念:vector
是一个顺序的容器,能够存放各种类型的对象。可以将其理解为一个能存放任意类型的动态数组(可变长的数组)。
vector
的初始化:
- vector():创建一个空向量
- vector(n):创建一个长度为n的向量
- vector(n,t):创建一个长度为n,元素为t的向量
vector
的定义:vector
;
函数 | 功能 |
---|---|
insert(pos,x) | 插入元素x到vector的指定位置 |
push_back(x) | 添加一个元素x到vector的后面 |
erase(pos) | 删除指定位置的元素 |
erase(pos1,pos2) | 删除向量中[pos1,pos2]区间中的元素 |
pop_back() | d出或删除vector的最后一个元素 |
clear() | 清除vector中所有的元素,size()变为0 |
front() | 取vector的第一个元素 |
back() | 取vector的最后一个元素 |
begin() | 返回vector的头指针,指向第一个元素 |
end() | 返回vector的尾指针,指向最后一个元素的下一个位置 |
运算符[i] | 取vector下标为i的元素 |
size() | 返回vector中实际元素的个数 |
empty() | 判断vector是否为空 |
- 对于数组,其大小是固定的。
vector
的大小是可变的,开始vector
为空,随着不断插入元素,vector
自动申请空间,容量变大。一般每次申请空间的大小是现有元素的两倍。 - 要熟练使用
sort()
、reverse()
等函数对vector
进行排序、逆序等 *** 作 - 当数组为空时,可以使用下标遍历数组。若数组定义为全局变量,则数组元素默认全为0。而当
vector
为空时,不能使用下标来访问。
#include
#include
#include
//reverse需要用到头文件algorithm
using namespace std;
void print(vector<int> v)//遍历容器函数
{
for (int i = 0;i < v.size();i++) cout << v[i] << " ";
cout << endl;
}
int main()
{
vector<int> v;
cout << v.size() << endl;//0
v.push_back(2); v.push_back(3); v.push_back(1); v.push_back(4);
cout << v.size() << endl;//4
print(v);//2 3 1 4
cout << v[0] << " " << v[1] << " " << v[2] << " " << v[3] << endl;//2 3 1 4
cout << v.front() << " " << v.back() << endl;//2 4
reverse(v.begin(),v.end());//逆序输出
for (int i = 0;i < v.size();i++) cout << v[i] << " ";//4 1 3 2
cout << endl;
v.pop_back();//删除最后一个元素
print(v);//4 1 3
vector<int> v2(4);//定义一个长度为4的空容器
print(v2);//0 0 0 0
vector<int> v3(4,10);//定义一个长度为4,元素全为10的容器
print(v3);//10 10 10 10
v3.insert(v3.begin(),3);//在v3的开头插入1个3
print(v3);//3,10 10 10 10
v3.insert(v3.begin(),2,3);//在v3的开头插入2个3
print(v3);//3,3,3,10 10 10 10
v3.erase(v3.begin());//删除v3的第一个元素
print(v3);//3 3 10 10 10 10
return 0;
}
以上代码的输出结果:
0
4
2 3 1 4
2 3 1 4
2 4
4 1 3 2
4 1 3
0 0 0 0
10 10 10 10
3 10 10 10 10
3 3 3 10 10 10 10
3 3 10 10 10 10
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)