vector的基本使用
#include<vector>
using namespace std;
void main(){
//vector
vector<int> v;
//插入
//v.begin迭代器的开始的位置
v.insert(v.begin(),12);
v.insert(v.begin(), 22);
v.insert(v.begin(), 2);
//插到尾
v.insert(v.end(), 92);
//修改第一个位置的值
v.front() = 102;
//最后的数据修改
v.back() = 93;
//放到最后位置
v.push_back(55);
//移除最后一个元素
v.pop_back();
//通过迭代器进行移除
v.erase(v.begin());
//获取数据
//若越界会崩溃
for (int i = 0; i < v.size(); i++){
cout << v[i] << "\t";
}
cout << endl;
//若越界会抛异常
for (int i = 0; i < v.size(); i++){
cout << v.at(i)<<"\t";
}
cout << endl;
//通过迭代器取值
for (vector<int>::iterator it = v.begin(); it != v.end(); it++){
cout << *it << "\t";
}
cout << endl;
getchar();
}
stack容器
#include<stack>
using namespace std;
void main(){
stack<int> s;
//入栈
s.push(12);
s.push(16);
s.push(72);
//取出,for和迭代器都不可以
int top =s.top();
cout << top << endl;
//弹出栈顶
s.pop();
int top = s.top();
cout << top << endl;
getchar();
}
队列
#include<queue>
using namespace std;
void main(){
queue<int> q;
//存放数据
q.push(12);
q.push(22);
q.push(32);
q.push(52);
//修改第一个位置的值
q.front() = 2;
//取数据
cout << q.front() << endl;
//弹出
q.pop();
//cout << q.front() << endl;
//最后一位数
cout << q.back() << endl;
//循环
while (!q.empty()){
cout << q.front() << endl;
q.pop();
}
getchar();
}
//优先级队列
void main(){
priority_queue<int> qq;
qq.push(12);
qq.push(22);
qq.push(32);
qq.push(52);
//最大值
cout << qq.top() << endl;
getchar();
}
list的增删改查
void main(){
list<int>list1;
//插入
list1.push_front(12);
list1.push_back(22);
list1.insert(list1.begin(), 16);
//修改
list1.back() = 32;
list1.front() = 2;
//删除
list1.erase(list1.begin());
list1.pop_back();
list1.pop_front();
//不能通过角标访问或者修改
//取值
for (list<int>::iterator i=list1.begin(); i !=list1.end(); i++)
{
cout << *i << endl;
}
getchar();
}
set集合的使用:set会对你传入的参数进行排序,不允许元素相同
#include<functional>//因为用了greater<int>()
void main(){
//set<int,less<int>> s;//默认是这个,就是从小到大排序
set<int, greater<int>> s;//从大到小
//添加参数,不需要迭代器也不需要指定位置
s.insert(12);
s.insert(45);
s.insert(13);
//重复插入不会报错
//第一个参数,插入的位置,第二个参数是否插入成功
pair<set<int,greater<int>>::iterator,bool> res= s.insert(45);
bool isSucceed=res.second;
if (isSucceed){
cout << "插入成功" << endl;
}
else{
cout << "插入失败" << endl;
}
for (set<int>::iterator i = s.begin(); i != s.end(); i++)
{
cout << *i << endl;
}
getchar();
}
谓词(函数谓词):按特定的规则所编写的函数谓词
class Student{
public:
string name;
int grade;
public:
Student(string name, int grade){
this->name = name;
this->grade = grade;
}
};
//谓词(函数谓词):按特定的规则所编写的函数谓词
bool compare(const Student& left, const Student& right){
return left.grade > right.grade;
}
//函数对象
struct comparefuction
{
bool operator()(const Student& _Left, const Student& _Right) const
{
return (_Left.grade > _Right.grade);
}
};
void main(){
set<Student, comparefuction > s;//从大到小
Student s1("Peakmain", 5);
Student s2("Treasure", 51);
Student s3("Body",7);
s.insert(s1);
s.insert(s2);
s.insert(s3);
//输出
for (set<Student>::iterator it = s.begin(); it != s.end(); it++){
cout << it->name.c_str() << endl;
cout << it->grade << endl;
}
getchar();
}
网友评论