STL容器

作者: geaus | 来源:发表于2016-04-30 23:07 被阅读0次

标准模板类库容器类有两种类型,分别是顺序和关联。顺序容器提供对其成员的顺序访问和随机访问,关联容器则经过优化关键值访问它们的元素。

找出下面程序的错误:

class CDemo{
    public:
      CDemo() : str(NULL);
      ~CDemo(){
          if(str) delete[] str;
      }
    public:
      char* str;
}

void main(){
    CDemo d1;
    d1.str=new char[32];
    strcpy(dl.str,"trend micro");
    vector<CDemo>* a1=new vector<CDemo>();
    a1->push_back(d1);
    delete a1;
}

这个程序的错误在于delete a1时,会销毁其中push的CDemo对象,而由于push_back(d1)时是浅赋值,即没有开辟新的内存保存d1.str的值,使得程序结束后,对d1.str执行了两次内存释放,造成delete同一片内存,程序崩溃。解决这个问题的方法是定义CDemo类的一个深复制构造函数。

//像下面那样,当erase当前iterator指向的元素时,这个iterator就失效了,对其++或取值都会报错。
vector<int> v;
v.push_back(1);
v.push_back(2);
vector<int>::iterator it=v.begin();
v.erase(it);
it++;
cout<<*it;

下面的代码是使用函数指针完成给定的任务,利用静态模板类实现。

#include <iostream>
using namespace std;

template<class T>
class Operate{
    public:
    static T Add(T a, T b){
        return a+b;
    }
    static T Mul(T a, T b){
        return a*b;
    }
    static T Minus(T a, T b){
        return a-b;
    }
}
//使用时,如下
int a=19, b=1;
cout<<Operator<int>::Add(a,b);

常用的STL容器:

数据结构 描述 实现的头文件
向量(vector) 连续存储的元素 <vector>
列表(list) 由节点组成的双向链表 <list>
双队列(deque) 连续存储的指向不同元素的指针所组成的数组 <deque>
集合(set) 由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素拥有相同的次序 <set>
多重集合(multiset) 允许存在两个次序相等的元素的集合 <set>
栈(stack) 后进先出的值的排列 <stack>
队列(queue) 先进先出的值的排列 <queue>
优先队列(priority_queue) 元素的次序是由作用于所存储的值决定的一种队列 <queue>
映射(map) 由{键,值}对组成的集合,按键排序 <map>

相关文章

  • C++标准库结构与使用

    本文预览: 标准库和STL STL的六大组件 STL容器分类 STL容器使用 标准库和STL ** 我们在写C++...

  • [C++] STL 容器

    参考:[C++] STL 容器 (一) - 基本介紹[C++] STL 容器 (二) - Iterator 部分示例:

  • GeekBand C++第五周

    STL 对定义的通用容器分三类:顺序性容器、关联式容器和容器适配器。 标准STL顺序容器:vector、deque...

  • STL容器

    STL容器迭代器 STL容器迭代器失效情况分析、总结[https://ivanzz1001.github.io/r...

  • 2019-10-13 STL模板

    STL共有六大组件 1、容器 2、算法 3、迭代器 4、仿函数 6、适配器 STL容器的实现原理 STL来管理数据...

  • C++ STL是什么

    STL 组件主要包括容器,迭代器、算法和仿函数。STL 基本结构和 STL 组件对应。 STL 主要由迭代器、算法...

  • STL概论与版本简介

    1 STL概论与版本简介 1.1 STL概述 STL提供六大组件,彼此可以组合套用: 容器(Containers)...

  • 面试知识点(5)STL

    容器类型 STL容器主要分为 顺序容器 vector(向量容器) deque(双端队列容器) list(双向链...

  • 五、STL容器共性机制(解释二的疑问)、STL容器使用时机

    1.STL容器共性机制 STL容器所提供的都是值(value)寓意,而非引用(reference)寓意,也就是说当...

  • (Boolan) STL与泛型编程第四周笔记(上)

    1 STL组建(STL Components) 关键组建:容器,迭代器,算法 STL的基本观念就是将数据和操作分离...

网友评论

      本文标题:STL容器

      本文链接:https://www.haomeiwen.com/subject/rimkrttx.html