C++容器:順序容器 關(guān)聯(lián)容器

字號(hào):

容器主要分為順序容器和關(guān)聯(lián)容器。
    一,順序容器
    vector--連續(xù)存儲(chǔ)的元素,單向的
    list----由節(jié)點(diǎn)組成的不連續(xù)存儲(chǔ)的雙向鏈表
    deque--連續(xù)存儲(chǔ)的元素,雙向的
    1,順序容器主要分為vector, deque, list。
    2,容器內(nèi)的元素類型必須至少滿足2個(gè)條件:可復(fù)制和可賦值。
    3,list容器的迭代器,不支持算術(shù)運(yùn)算,不支持關(guān)系運(yùn)算,也沒(méi)有下標(biāo)操作,只有最簡(jiǎn)單的自增 自減 相等 不等 運(yùn)算。
    4,所有的 迭代器范圍都是左閉合區(qū)間, [beg,end) 包括beg,但不包括end 5,順序容器定義的幾種類型:
    size_type容器大小
    iterator 迭代器, reverse_iterator 逆序迭代器const_iterator 只讀迭代器(指向的元素只讀), const_reverse_iterator difference_type 迭代器的差值,可為負(fù)值
    value_type元素類型
    reference 相當(dāng)于 value_type&,即指向迭代器對(duì)應(yīng)的元素
    const_reference相當(dāng)于const value_type &
    6,a.begin() a.end() 對(duì)應(yīng)于 iterator;a.rbegin() a.rend() 對(duì)應(yīng)于reverse_iterator,注意,如果a是const的,那么iterator也必須是const_iterator的
    7,添加元素的擦作a.push_back(t); 在a末尾增加元素t;a.push_front(t); 在a前端增加元素t,只使用于list和deque a.insert(p,t); 在迭代器p前面插入元素t,返回新元素的迭代器a.insert(p,n,t); 在迭代器p前面插入n個(gè)元素t,返回void a.insert(p,b,e);在迭代器p前面插入迭代器b,e標(biāo)記的范圍內(nèi)的元素,返回void
    8,刪除元素的操作a.pop_back();刪除a的最后一個(gè)元素,返回void,如果a為空,則函數(shù)未定義a.pop_front();刪除a的第一個(gè)元素,返回void;如果a為空,則函數(shù)未定義;只適用于list和deque a.erase(p); 刪除迭代器p指向的元素,返回下一個(gè)元素的迭代器;a.erase(b,e);刪除迭代器b,e之間的元素,返回下一個(gè)元素的迭代器a.clear(); 刪除a的所有元素,返回void
    9,容器空間大小的操作a.size() 元素個(gè)數(shù) c.max_size() 元素個(gè)數(shù)a.empty() bool值,指示a是否為空c.resize(n,t) 重置c的大小為n,且 新增加的元素初始化為t。
    10, a.begin() a.end()指向iterator a.front() a.back() 指向reference注意,vector::reference last=a.back(), last1=*--a.end();,a.back指向最后一個(gè)元素,a.end指向最后一個(gè)元素的下一位置
    11,順序容器的賦值操作
    c1=c2;
    c1.swap(c2); c1 c2 互換c.assign(b,e); 將迭代器b,e之間的元素復(fù)制給c c.assign(n,t); 將c設(shè)置為n個(gè)值為t的元素
    以上操作,都是首先刪除c原來(lái)的所有元素后再進(jìn)行的操作