1、vector可以理解为“变长数组”
//头文件
#include<vector>
2、定义
vector<typename> name;//相当于一维数组name[size]
3、访问方法:
vi[i]等价于vi.begin()+i
vi.end()
4、含用函数
push_back(x)就是在vector后面添加一个元素x
vi.size()得到容器的大小
vi.pop_back();//删除vector的尾元素
vi.insert(vi.begin() + 2, -1);//insert(it,x)是在这个位置插入元素x
vi.erase(vi.begin() + 2);//erase()删除这个位置的单个元素
vi.erase(vi.begin() + 1, vi.end());//erase()删除这个区间的所有元素,这个区间是左闭右开
vi.clear();//clear()清空容器
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vi;
for (int i = 0; i < 4; i++) {
vi.push_back(i);
}
for (int i = 0; i < vi.size(); i++) {
cout << vi[i] << " ";
}//可以利用size()得到vector容器的大小
cout << endl;
vi.pop_back();//删除vector的尾元素
for (int i = 0; i < vi.size(); i++) {
cout << vi[i] << " ";
}
cout << endl;
vi.insert(vi.begin() + 2, -1);//insert(it,x)是在这个位置插入元素x
for (int i = 0; i < vi.size(); i++) {
cout << vi[i] << " ";
}
cout << endl;
vi.erase(vi.begin() + 2);//erase()删除这个位置的单个元素
for (int i = 0; i < vi.size(); i++) {
cout << vi[i] << " ";
}
cout << endl;
vi.erase(vi.begin() + 1, vi.end());//erase()删除这个区间的所有元素,这个区间是左闭右开
for (int i = 0; i < vi.size(); i++) {
cout << vi[i] << " ";
}
cout << endl;
vi.clear();//clear()清空容器
for (int i = 0; i < vi.size(); i++) {
cout << vi[i] << " ";
}
cout << endl;
return 0;
}
1、set是集合,是一个 内部自动有序且不含重复元素 的容器
#include <set>
2、定义
set<typename> name;
3、访问方式
只能通过迭代器访问
set<typename>::iterator it;
示例
for (set<int>::iterator it = st.begin(); it != st.end(); it++) {
cout << *it << " ";
}
4、常用函数
st.insert(x);在容器中插入x,注意这是个自动升序且无重复元素的容器
set<int>::iterator it = st.find(5);find(x)函数,返回值为x的迭代器
st.erase(it);删除迭代器it,常与find()函数搭配使用
st.erase(x);也可以直接删除迭代器中值为x
st.erase(at, st.end());也可以直接删除这个区间
st.clear();清除其中所有元素
#include <iostream>
#include <set>
using namespace std;
int main() {
set<int> st;
st.insert(5);
st.insert(2);
st.insert(9);
st.insert(6);
st.insert(10);
for (set<int>::iterator it = st.begin(); it != st.end(); it++) {
cout << *it << " ";
}
cout << endl;
set<int>::iterator it = st.find(5);
cout << *it << endl;
st.erase(it);
for (set<int>::iterator it = st.begin(); it != st.end(); it++) {
cout << *it << " ";
}
cout << endl;
st.erase(2);
for (set<int>::iterator it = st.begin(); it != st.end(); it++) {
cout << *it << " ";
}
cout << endl;
cout << st.size() << endl;
set<int>::iterator at = st.find(9);
st.erase(at, st.end());
for (set<int>::iterator it = st.begin(); it != st.end(); it++) {
cout << *it << " ";
}
st.clear();
return 0;
}
1、string可以用来存放字符串(也可以用char str[ ])
#include<string>//注意string.h是两个不同的头文件
2、定义
string str;
string st = "abcd";
3、访问
可以通过下标直接访问
cout << str[2] << " " << endl;;
for (int i = 0; i < str.size(); i++) {
cout << str[i] << " ";
}
4、常用函数
有好多,但我不觉得很有用,先跳过
1、queue即队列,是一个先进先出的容器
#include <queue>
2、定义
queue<typename> q;
3、访问方式
由于queue是一个先进先出的容器,可以用front()访问队头元素,back()访问队尾元素
queue<int> q;
for (int i = 1; i < 6; i++) {
q.push(i);
}
cout << q.front() << " " << q.back() << endl;
4、常见函数
push(x)? 将x入队
front() 获得队头元素;
back() 获得队尾元素;
pop() 弹出队头元素;
size() 返回队列的大小;
empty() 检测队列是否为空;
#include <iostream>
#include <queue>
using namespace std;
int main() {
queue<int> q;
for (int i = 1; i < 6; i++) {
q.push(i);
}
cout << q.front() << " " << q.back() << endl;
q.pop();
cout << q.front() << endl;
cout << q.size() << endl;
if (!q.empty()) {
cout << "no empty";
} else {
cout << "empty";
}
return 0;
}
1、stack即栈,是一个 后进先出 的容器
#include<stack>
2、定义
stack<typename> st;
3、访问方式
栈是一个后进先出的容器,只能通过top()来获得栈顶元素
for (int i = 1; i < 6; i++) {
st.push(i);
}
cout << st.top() << endl;
4、常见函数
push(x) 将元素x入栈
top()获得栈顶元素
size()获得栈的大小
empty()判空
pop()弹出栈顶元素
#include <iostream>
#include <stack>
using namespace std;
int main() {
stack<int> st;
for (int i = 1; i < 6; i++) {
st.push(i);
}
st.pop();
cout << st.top() << endl;
cout << st.size() << endl;
if ( ! st.empty()) {
cout << "no empty";
} else {
cout << "empty";
}
return 0;
}
1、头文件
#include <algorithm>
2、常见函数
max(x,y)取两个数之间的最大值
min(x,y)取两个数之间最小值
abs(x)取绝对值
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int x = 5;
int y = -1;
cout << max(x, y) << endl;
cout << min(x, y) << endl;
cout << abs(y) << endl;
return 0;
}
sort(首元素地址(必填),尾元素地址的下一个地址(必填),比较函数(选填))
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int a[6];
for (int j = 6; j > 0; j--) {
a[6 - j] = j;
}
sort(a, a + 3);
for (int i = 0; i < 6; i++) {
cout << a[i] << " ";
}
return 0;
}