array
//初始化
void fun() {
array<int,3>arr1;
array<int,3>arr2{};
array<int,3>arr3{1,2,3};
array<int,3>arr4(arr3);
array<int,6>arr5({1,2,3});
array<int,3>arr6={arr4};
arr1 = arr3;
arr2.fill(123);
get<0>(arr2) = 456;
cout << arr2[0]<<"----"<<arr2[1]<<"----"<<arr2[2]<<endl;
}
void fun1() {
array<int,3>arr1{1,2,3};
array<int,3>arr2;
array<int,3>arr3{4,5,6};
array<int,3>arr4{1,2,3};
cout <<(arr1 == arr4)<<endl;// 大小相同,逐值比较
cout <<arr1.empty()<<"--"<<arr1.size()<<"---"<<arr1.max_size()<<endl;
cout <<arr2.empty()<<"--"<<arr2.size()<<"---"<<arr2.max_size()<<endl;
cout <<arr1.at(0) <<"---"<<get<1>(arr1) <<"---"<<arr1[2] <<endl;
arr3.swap(arr1);
}
//迭代器
void fun2() {
array<int,3>arr1{1,2,3};
/**
* begin()/end();
* cbegin()/cend(); cbegin中的c表示const,不允许通过迭代器修改元素
* rbegin()/rend(); 逆向迭代器
* crbegin()/crend();
*/
array<int,3>::iterator start;
start = arr1.begin();
array<int,3>::iterator end = arr1.end();
while (start!=end)
{
cout <<*start<<endl;
start++;
}
}
stack
- 先进后出
- 不提供迭代器,不能遍历
- 只能操作栈顶元素
常用api
- size() 元素个数
- empty() 是否为空
- top() 返回栈顶元素,不删除,如果是空栈,会报错
- push (val) 向栈顶追加元素
- pop() 删除栈顶元素,出栈,如果没元素可出栈,会报错
- emplace(val) 向栈顶追加元素,比push效率高
#include <stack>
//初始化
void fun() {
stack<int>s1;
s1.push(1);
s1.push(2);
s1.push(3);
stack<int>s2(s1);
stack<int>s3;
cout <<s2.empty()<<"---"<<s2.size()<<endl;
cout <<s3.empty()<<"---"<<s3.size()<<endl;
}
set
-
set是关联容器,其通过键值进行排序
-
set和multiset的区别是,multiset可以有重复的键值
-
底层是红黑树
常用api -
size() 元素个数
-
empty() 是否为空
-
insert(elem) 插入元素
-
clear() 清空元素
-
erase(pos) 删除pos迭代器处的元素,返回下一个位置迭代器元素
-
erase(begin, end) 删除begin,end区间元素,返回下一个迭代器位置
-
erase(elem) 删除容器中值为elem元素
-
find(key) 查找key是否存在,存在就返回迭代器,不存在就返回end迭代器
-
int cout(key) 查找key的个数
-
lower_bound(elem) 返回第一个大于或等于elem的元素迭代器,不存在就返回end迭代器
-
upper_bound(elem) 返回第一个大于elem的元素迭代器,不存在就返回end迭代器
-
equal_range(elem) 返回两个大于或等于elem的元素迭代器,用对组接收,pair<set<T>::iterator,pair<set<T>::iterator>,不存在就返回end迭代器
#include <set>
//初始化
void fun() {
set<int>s1;
set<int>s2{1,2,3,4,5,6,7};
set<int>s3{};
set<int>s4(s2);
set<int>s5={s2};
set<int>s6;
s6 = s5;
s1.swap(s2); // 交换两个集合
for(auto start = s2.begin(); start != s2.end(); start++) {
cout <<*start<<", ";
}
cout <<endl;
}
void fun2() {
set<int>s1{3,4,2,10,1,6};
s1.insert(5);
for(auto start = s1.begin(); start != s1.end(); start++) {
cout <<*start<<", ";
}
cout <<endl;
auto it = s1.find(33);
if (it == s1.end())
{
cout <<"没找到。。"<<endl;
}
}
网友评论