c++ deque构造及方法get

mac2022-06-30  65

#include <vector> #include <string> #include <iostream> #include <list> #include <iterator> #include <deque> using namespace std; bool fun(int a) { return a>5; } // deque double extermity queue 双端队列 // deque没有容量的概念,其内部采用分段连续内存空间来存储元素, // 在插入元素的时候随时都可以重新增加一段新的空间并链接起来。 // deque维护着一个map,用来记录每个缓冲区的位置。 键值对 int main() { // 构造 deque<int> d1 = {1,2,3}; deque<int> d2 {1,2,3}; deque<int> d3 (100); //100个 默认值为0 deque<int> d4 (100,2); //100个2 deque<int> d5 (d1); deque<int> d6 (d1.begin(), d1.end()); vector<int> v1 = {1,2,3}; list<int> l1 = {1,2,3}; //deque<int> d7 (v1); //报错 //deque<int> d8(l1); //报错 // deque维护着一个map<首地址,大小> map的每个键值对是vector形式的,但键值对之间是list形式的 // 所以deque本质既不是 vector 也不是 list 所以不能用vector或 list 为 deque赋值。 //d1.capacity(); deque同样没有capacity()方法 //增删改查操作 同vector 一些小区别如下 d1.push_front(2); //vector没有前插功能 d1.emplace_front(2); d1.pop_front(); d1.clear(); //d1.rease(); deque没有按值删除 //get_allocator() 获取空间配置器 deque<int> d7; int *p = d7.get_allocator().allocate(5); cout << d7.size() << endl; //0 for (int i=0; i<5; i++) d7.get_allocator().construct(&p[i],i); for (int i=0; i<5; i++) std::cout << ' ' << p[i]; //0 1 2 3 4 std::cout << '\n'; for (int i=0; i<5; i++) d7.get_allocator().destroy(&p[i]); for (int i=0; i<5; i++) std::cout << ' ' << p[i]; //0 1 2 3 4 std::cout << '\n'; d7.get_allocator().deallocate(p,5); for (int i=0; i<5; i++) std::cout << ' ' << p[i]; //14835072 0 14811472 0 4 std::cout << '\n'; return 0; }
最新回复(0)