forward_list,单列表,单向链表,只支持向前操作
#include <iostream>
#include <forward_list>
using namespace std;
void main(){
//该链表只支持头插
forward_list<int> list{ 2, 3, 4, 5, 6 };
list.push_front(23);
/*for (auto i : list){
cout << i << endl;
}*/
auto ib = list.begin();
list.insert_after(ib, 33);
ib = list.before_begin(); //链表的头节点
list.insert_after(ib, 100);
int arr[5] = {44,55,66,77,88};
list.insert_after(ib,arr,arr+5);
//删除数据
list.erase_after(++ib);
//排序
list.sort();
for (auto ib = list.begin(), ie = list.end(); ib != ie;ib++){
cout << *ib <<endl;
}
cout << "Nanjing" << endl;
cin.get();
}
#include <iostream>
#include <vector>
using namespace std;
//vector动态数组 内存在堆上分配
void main22(){
vector<int> myvector = {11,22,33,44,55};
for (int i = 0; i < 20; i++){
myvector.push_back(i);
}
//realloc功能
myvector.resize(10);
for (auto i : myvector){
cout << i << endl;
}
for (auto ib = myvector.begin(), ie = myvector.end(); ib != ie;ib++){
cout << *ib << endl;
}
cin.get();
}
void main(){
vector<int> vec = {11,22,33};
//重新初始化
vec.assign(5, 100);
auto it = vec.begin() + 3;
it = vec.insert(it, 22);
//自动管理内存
vector<int> myvec;
//获取分配器 分配内存
int * p = myvec.get_allocator().allocate(5);
for (int i = 0; i < 5; i++){
cout << (p[i] = i) << endl;
}
//释放没存
myvec.get_allocator().deallocate(p, 5);
//for (auto ib = vec.begin(), ie = vec.end(); ib != ie; ib++){
// cout << *ib << endl;
//}
cin.get();
}
initializer_list处理大括号
#include <iostream>
#include <initializer_list>
using namespace std;
void show(initializer_list<int> list){
for (auto i : list){
cout << i << endl;
}
}
void main(){
//initializer_list处理大括号
show({1,2,3,4,5,6});
cin.get();
}