STL容器

標(biāo)準(zhǔn)模板類庫容器類有兩種類型,分別是順序和關(guān)聯(lián)。順序容器提供對其成員的順序訪問和隨機(jī)訪問,關(guān)聯(lián)容器則經(jīng)過優(yōu)化關(guān)鍵值訪問它們的元素。

找出下面程序的錯誤:

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)時是淺賦值,即沒有開辟新的內(nèi)存保存d1.str的值,使得程序結(jié)束后,對d1.str執(zhí)行了兩次內(nèi)存釋放,造成delete同一片內(nèi)存,程序崩潰。解決這個問題的方法是定義CDemo類的一個深復(fù)制構(gòu)造函數(shù)。

//像下面那樣,當(dāng)erase當(dāng)前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;

下面的代碼是使用函數(shù)指針完成給定的任務(wù),利用靜態(tài)模板類實現(xiàn)。

#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容器:

數(shù)據(jù)結(jié)構(gòu) 描述 實現(xiàn)的頭文件
向量(vector) 連續(xù)存儲的元素 <vector>
列表(list) 由節(jié)點組成的雙向鏈表 <list>
雙隊列(deque) 連續(xù)存儲的指向不同元素的指針?biāo)M成的數(shù)組 <deque>
集合(set) 由節(jié)點組成的紅黑樹,每個節(jié)點都包含著一個元素,節(jié)點之間以某種作用于元素對的謂詞排列,沒有兩個不同的元素?fù)碛邢嗤拇涡?/td> <set>
多重集合(multiset) 允許存在兩個次序相等的元素的集合 <set>
棧(stack) 后進(jìn)先出的值的排列 <stack>
隊列(queue) 先進(jìn)先出的值的排列 <queue>
優(yōu)先隊列(priority_queue) 元素的次序是由作用于所存儲的值決定的一種隊列 <queue>
映射(map) 由{鍵,值}對組成的集合,按鍵排序 <map>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • STL(標(biāo)準(zhǔn)模板庫),是目前C++內(nèi)置支持的library。它的底層利用了C++類模板和函數(shù)模板的機(jī)制,由三大部分...
    歲與禾閱讀 39,394評論 3 132
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,637評論 18 399
  • STL包括容器,算法和迭代器 STL的模板類為c++提供了完善的數(shù)據(jù)結(jié)構(gòu),它的模板類的樣式就好象數(shù)據(jù)結(jié)構(gòu)中用類c或...
    元素周期表的十七君閱讀 625評論 0 1
  • 從三月份找實習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍(lán)閱讀 42,787評論 11 349
  • 2017年成華區(qū)“全民閱讀·為愛朗讀”公益演出活動即將開始 時間緊,任務(wù)重, 從早到晚想的就是這些事兒 雖然勞累 ...
    小步姐姐閱讀 370評論 4 4

友情鏈接更多精彩內(nèi)容