STL之序列化容器

时间:2021-04-08 13:03:24   收藏:0   阅读:0

序列化容器

以线性排列(类似普通数组的存储方式)来存储某一指定类型(例如 int、double 等)的数据。需要特殊说明的是,该类容器并不会自动对存储的元素按照值的大小进行排序。
STL提供了vector,list,deque,stack,queue,priority-queue。其中stack,queue(它们都是在 deque 容器的基础上改头换面而成)
在技术上被归为配接器(adapter),但《STL源码剖析》还是在序列化容器这节讲了。另外,C++11引入了array序列式容器。

array

  1. std::array<double, 10> values;//随机值
  2. std::array<double, 10> values {};//默认0.0
  3. std::array<double, 10> values {0.5,1.0,1.5,,2.0};//其余初始化为0.0

vector

  1. std::vector values; //注意,这是个空容器,用push_back或者reserve函数初始化容量
  2. std::vector primes {2, 3, 5, 7, 11, 13, 17, 19};
  3. std::vector values(20);//默认值0.0
  4. std::vector values(20,1.0);//默认值1.0
  5. std::vector values(其他vector容器);

deque

  1. curr指向当前缓冲区现行元素
  2. first指向当前缓冲区的头
  3. last指向当前缓冲区的尾(包含备用空间,一般预留一个,到这就会新开辟缓冲区)
  4. node指向管控中心map(指向指针(map自己的)的指针(缓冲区的))
  5. 注意push_front(判定条件start.curr != start.first)在内部实现上指针的走向是和push_back(判定条件finish.curr!= finish.last - 1(预留一个空间))反着的
    我认为正向不需要预留是因为从头开始一般是满的,符合逻辑

几种常见初始化方式:

  1. std::deque d;//空的,可以通过 push_back()、push_front() 或者 resize() 成员函数实现向(空)deque 容器中添加元素。
  2. std::deque d(10);//有默认值0
  3. std::deque d(10, 5)//有默认值5
  4. std::deque d1(5);
    std::deque d2(d1);//拷贝其他容器
  5. //拷贝普通数组,创建deque容器
    int a[] = { 1,2,3,4,5 };
    std::dequed(a, a + 5);
    //适用于所有类型的容器
    std::array<int, 5>arr{ 11,12,13,14,15 };
    std::dequed(arr.begin()+2, arr.end());//拷贝arr容器中的{13,14,15}

list

几种常见初始化方式:参照deque

forward_list

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!