前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++基础STL序列式容器

C++基础STL序列式容器

作者头像
羊羽shine
发布2019-05-28 13:27:39
3580
发布2019-05-28 13:27:39
举报
文章被收录于专栏:Golang开发Golang开发

vector

vector是将元素置于一个动态数组中加以管理的容器。 vector可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法,这个等下会详讲)。 vector尾部添加或移除元素非常快速。但是在中部或头部插入元素或移除元素比较费时

代码语言:javascript
复制
#import <vector>
using namespace std;

int main() {
    vector<int> v;
    for (int i = 0; i <10 ; ++i) {
         v.push_back(1+i);
    }
    for (int j = 0; j <v.size() ; ++j) {
          cout<<v[j]<<" ";
    }
    cout <<endl;
    v.pop_back();
    for (int j = 0; j <v.size() ; ++j) {
        cout<<v[j]<<" ";
    }
    return 0;
}

Deque

deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双端数组,而vector是单端的。 deque在接口上和vector非常相似,在许多操作的地方可以直接替换。 deque可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法,这个等下会详讲)。 deque头部和尾部添加或移除元素都非常快速。但是在中部安插元素或移除元素比较费时。 deque采用模板类实现,deque对象的默认构造形式:deque<T> deqT;

代码语言:javascript
复制
deque <int> deqInt;            //一个存放int的deque容器。
deque <float> deq Float;     //一个存放float的deque容器。
deque <string> deq String;     //一个存放string的deque容器。
deque末尾的添加移除操作
代码语言:javascript
复制
deque.push_back(elem);  //在容器尾部添加一个数据
deque.push_front(elem); //在容器头部插入一个数据
deque.pop_back();           //删除容器最后一个数据
deque.pop_front();      //删除容器第一个数据
插入
代码语言:javascript
复制
deque.insert(pos,elem);   //在pos位置插入一个elem元素的拷贝,返回新数据的位置。
deque.insert(pos,n,elem);   //在pos位置插入n个elem数据,无返回值。
deque.insert(pos,beg,end);   //在pos位置插入[beg,end)区间的数据,无返回值。

Stack

stack是堆栈容器,是一种“先进后出”的容器。 stack是简单地装饰deque容器而成为另外的一种容器。

Queue容器

queue是队列容器,是一种“先进先出”的容器。 queue是简单地装饰deque容器而成为另外的一种容器。

代码语言:javascript
复制
queue<int> queInt;            //一个存放int的queue容器。
queue<float> queFloat;     //一个存放float的queue容器。
queue<string> queString;     //一个存放string的queue容器。

List

List 是一个双向链表

代码语言:javascript
复制
list<int> lstInt;            //定义一个存放int的list容器。
list<float> lstFloat;     //定义一个存放float的list容器。
list<string> lstString;     //定义一个存放string的list容器。
元素访问
代码语言:javascript
复制
it.front();// 返回第一个元素
it.back();// 返回最后一个元素
it.begin();//返回第一个元素的迭代器
it.end();//返回指向最后一个元素的下一个迭代器
添加元素
代码语言:javascript
复制
it.push_back();// 在尾部插入数据
it.push_front();//在头部插入数据
it.insert(pos,elem);// 在pos位置插入元素
it.insert(pos,n,elem)//  在pos位置插入n个元素elem;
it.insert(pos,begin,end);//在pos位置插入[begin end]区间的值作为元素
删除元素
代码语言:javascript
复制
it.pop_back();// 从尾部删除元素
it.pop_front();//在头部插入元素
it.erase(pos);// 从中间删除元素
it.remove(elem);// 在容器中删除所有与elem匹配的元素
代码语言:javascript
复制
using namespace std;
template <typename  T>
void printList(list<T> currList){
    auto index = currList.begin();
    for (index;index!=currList.end();index++) {
        cout<< *index<<" ";
    }
    cout<<endl;
};

int main() {
    list<int> it;
    for (int i = 0; i < 10; ++i) {
        it.push_back(i+1);
    }
    printList(it);
    it.pop_back();
    it.push_front(5);
    printList(it);
    it.remove(5);
    printList(it);
    return 0;
}

时间复杂度:

container

access

insert or erase

vector

O(1)

O(n^2)

list

O(n)

O(n)

dequeue

O(n)

O(n)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.12.11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • vector
  • Deque
    • deque末尾的添加移除操作
      • 插入
      • Stack
      • Queue容器
      • List
        • 元素访问
          • 添加元素
            • 删除元素
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档