//c++ stl库学习
//http://c.biancheng.net/stl/
//vector向量
#include <iostream>
#include "vector"
#include "list"
#include "map"
#include "set"
#include "stack"
using namespace std;
void learnVector(){
//vector是动态数组,擅长在尾部插入或删除元素O(1).在容器头部或者中部插入或删除元素O(n)
//Vector<T>
vector<int> values;//此时values为空,因为没有分配内存给它
vector<int> primes {2,3,5,7};//初始值
vector<int> v(20); //初始20个0
primes.push_back(1);
primes.pop_back();
primes.insert(primes.begin(),4);//在指定的位置插入一个或多个元素。
int a = primes.at(3);//会检查是否越界
primes.capacity();//返回当前容量
primes.empty();
primes.front();//返回第一个元素的引用
primes.assign(primes.front(),4);//替换元素
swap(values,primes);//更换容器元素
//vector 容器可以向普通数组那样访问存储的元素,甚至对指定下标处的元素进行修改
cout << values[0] << endl;
primes.clear();
}
void learnList(){
//list 双向链表容器 可以在序列已知的任何位置快速插入或删除元素(时间复杂度为O(1))
//不支持容器对象名[6]这种语法格式
list<int> values;//空list
list<int> values1(10); //包含10个元素初值为0
list<int> values2(10,5);//包含10个元素初值为5
list<int> values3(values); // copy另一个容器
values.sort();
values.reverse();//反转
values.unique();//删除相邻相同的
values.pop_back();
values.pop_front();
values.push_back(1);
values.push_front(1);
values.remove(1);//删除值为1的结点
auto del = values.begin();
//迭代器右移,指向第一个元素
++del;
values.erase(del);//删除迭代器指向的那个元素
//values.remove_if(); 传入lamada表达式
//values.splice(values.front(),values1);
}
void learnMap(){
//关联式容器,各个键值对的键和值可以是任意数据类型,该容器会自动根据各键值对的键的大小,按照既定的规则进行排序。一般做升序排序
map<string ,int> myMap;//空map
map<string ,int> myMap1{{"1",1},{"2",2}};
map<string, int> newMap(myMap) ;//copy
myMap1["1"];//重载了[]
myMap.at("1");
myMap.insert({"1", 2});
myMap.count("1");//查找键为 key 的键值对的个数并返回。注意,由于 map 容器中各键值对的键的值是唯一的,因此该函数的返回值最大为 1
}
void learnSet(){
//用户是无法做到修改 set 容器中元素的值的.和map一样,升序排列
set<int> myset{1,2,3,4};
myset.insert(3);
}
void learnStack(){
//底层使用deque
stack<int> myStack;
//用list容器初始化stack
std::list<int> values {1, 2, 3};
std::stack<int,std::list<int>> my_stack (values);
}
void learnQueue(){
}
void learnDeque(){
//双端队列容器,和 vector 不同的是,deque 还擅长在序列头部添加或删除元素,所耗费的时间复杂度也为常数阶O(1)
//当需要向序列两端频繁的添加或删除元素时,应首选 deque 容器。
}
int main(){
return 0;
}
c++ stl库学习
最新推荐文章于 2024-05-23 22:30:04 发布