Java集合框架 相当于 C++STL(标准模版库) #include<iostream>
STL包的内容都是在std命名空间里面
1.vector向量学习
容器 封装动态大小的数组,能够存放任意的动态数组
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vector1; //定义一个vector容器
vector<int> vector2(10);//定义一个 容量为10 的vector容器
vector<int> vector3(10, 4);//定义一个 容量为10 的vector容器,并初始化为值为0
vector1.insert(vector1.begin(), 99); //在vector的开头插入数据
vector1.insert(vector1.begin(), 88);
vector1.insert(vector1.begin(), 77);
cout << vector1.front() << endl; //获取第一个元素 输出:77
cout << vector1.back() << endl; // 获取最后一个元素 输出:99
vector1.front() = 100; //修改第一个元素
cout << vector1.front() << endl;
vector1.erase(vector1.begin()); //删除第一个元素
// 对vector的遍历
for (auto iterator = vector1.begin(); iterator != vector1.end(); iterator++) {
cout << "输出:" << *iterator << endl;
}
// for (vector<int>::iterator iterator = vector1.begin(); iterator != vector1.end(); iterator++) {
// cout << "输出:" << *iterator << endl;
// }
return 0;
}
2.stack栈学习 先进后出 后进先出
stack<int> stack
pop top push
无法遍历取值
#include <stack>
int main() {
stack<int> stack;
stack.push(20);
stack.push(30);
stack.push(40);
stack.push(50);
stack.pop();
cout << "输出:" << stack.top() << endl; //输出 40
return 0;
}
3.queue队列学习 先进先出
push front
#include <queue>
int main() {
queue<int> queue;
queue.push(20);
queue.push(30);
queue.push(40);
queue.push(50);
cout << queue.front() << endl; //输出 20
cout << queue.back() << endl; //输出 50
queue.pop();
cout << queue.front() << endl; //输出 30
return 0;
}
4.优先级队列学习
优先级队列默认做了从大到小的排序
priority_queue
对vector进行了一定的封装
#include <queue>
int main() {
// 默认会做从大到小的排序
priority_queue<int> queue;
queue.push(20);
queue.push(40);
queue.push(50);
queue.push(30);
// 循环代码
while (!queue.empty()) {
cout << "while1:" << queue.top() << endl;
queue.pop(); // 最前面的元素消费掉
}
return 0;
}
5.list学习
push_front push_back
insert
back front erase。
迭代器遍历
#include <list>
int main() {
list<int> list;
list.insert(list.begin(), 20); // 在开始位置插入
list.insert(list.begin(), 40);
list.insert(list.begin(), 30);
list.insert(list.begin(), 50);
list.push_front(12); //在开始位置插入
list.push_back(234); //在结束位置插入
cout << list.back() << endl; //获取最后位置的数据
for (auto item = list.begin(); item != list.end(); item++) {
cout << *item << endl;
}
return 0;
}
6.set来引出谓词
set 内部红黑树 会对存入的数据排序,但是绝对不允许元素相同
但是set不能直接存入对象,会导致崩溃
默认情况下 从小到大排序
#include <set>
int main() {
set<int> setVar;
setVar.insert(setVar.begin(), 2);
setVar.insert(setVar.begin(), 3);
setVar.insert(setVar.begin(), 4);
setVar.insert(setVar.begin(), 5);
pair<set<int>::iterator, bool> result = setVar.insert(4);
if (result.second) {
cout << "success" << endl;
cout << *result.first << endl;
} else {
cout << "fail" << endl; //输出fail
}
}
7.谓词:根据传入的对象返回一个布尔值的函数
bool doCompareAction(const Person& person1, const Person& person2) {
return person1.id < person2.id;
};
仿函数:一个结构体或者类 重载()运算符
struct doCompareAction2 {
public:
bool operator() (const Person& __x, const Person& __y) {
return __x.id < __y.id;
}
};
网友评论