容器:某一型別資料的集合。
c++標準順序容器包括:vector,list,queue
vectort;容器型別的規則:支援複製和賦值操作for (int i = 0; i < 50; i ++)
vector
c; //
空容器 vector c1(t); //
容器t的副本
vector c2(3, 4); //
3個值為4的容器
vector c3(t.begin(), t.end() - 10); //
容器t的begin()和end()-10之前的資料副本
vector c4(5); //
建立包含5個空預設值的副本
視窗的迭代訪問非常類似指標的操作,都支援++和--的位移操作,迭代器內建了操作符過載。
*item迭代器訪問item->num
++item
item++
--item
item--iter1 ==iter2
iter1 != iter2
for (vector::iterator iter = strs2.begin(); iter != strs2.end(); iter ++)迭代器的首元素迭代器和尾元素迭代器可以通過begin()和end()方法獲取,並通過++方法進行迭代。
迭代器操作的api:
iterators:
beginreturn iterator to beginning (public member function )
endreturn iterator to end (public member function )
rbeginreturn reverse iterator to reverse beginning (public member function)
rendreturn reverse iterator to reverse end (public member function)
容器的元素型別
of template > class vector;
member type
definition
reference
allocator::reference
const_reference
allocator::const_reference
iterator
random access iterator
const_iterator
constant random access iterator
size_type
unsigned integral type (usually same as size_t)
difference_type
signed integral type (usually same as ptrdiff_t)
value_type
tallocator_type
allocator
pointer
allocator::pointer
const_pointer
allocator::const_pointer
reverse_iterator
reverse_iterator
const_reverse_iterator
reverse_iterator
通過reverse型別屬性,可以逆序訪問容器的迭代器
容器的api提供在具體什麼位置增加或者刪除元素,或者在什麼元素增加或者刪除元素:
modifiers:
assignassign vector content (public member function)
push_backadd element at the end (public member function)
pop_backdelete last element (public member function)
insertinsert elements (public member function)
eraseerase elements (public member function )
swapswap content (public member function )
clearclear content (public member function)
capacity:
sizereturn size (public member function)
max_sizereturn maximum size (public member function )
resizechange size (public member function)
capacityreturn size of allocated storage capacity (public member function)
emptytest whether vector is empty (public member function)
reserverequest a change in capacity (public member function)
c++中的關聯容器包括 map 和 set
map與key, value相對應,整合起來map與pair型別對應
set 直接與 value相對應
同時存在multimap和multiset兩個物件,支援乙個key對應多個value
具體可以參考:
最常見的是find方法,c++中的示例:
// 包含必要的標頭檔案
#include
vector vec(2, 35除了少數情況下,c++的容器演算法都是在乙個範圍內的元素進行操作。所以其引數順序情況一般為:iter_begin, iter_end, search_value。);vec.push_back(8);
vec.push_back(
80);
vec.push_back(
98);
vec.push_back(
25);
vec.push_back(
12);
vector
::const_iterator result = find(vec.begin(), vec.end(), 80
);std::cout
<< 80
<< (result == vec.end() ? "
is not present
" : "
is present
") << std::endl;
c++容器使用的演算法與資料結構書中大致相同:
1. 唯讀演算法(查詢)
2. 寫演算法(排序)
3. 合併
4. 堆
5. 最大/最小值等
常用唯讀演算法:
實踐了fill, fill_n, back_inserter, copy, replace, sort, count_if
#include #include輸出結果:#include
#include
#include
using
namespace
std;
void log(std::string
log)
void
apitest()
intmain()
vector
vec2;
copy(vec.begin(), vec.end(), back_inserter(vec2));
return0;
}
關於容器演算法相關一章可參考:
容器與演算法
operator 過載小括號 模板中const 對型別進行嚴格檢測 const t 指向乙個常量的指標 1.類模板顯示特化 2.預設模板引數 3.成員模板 4.模板類的成員函式可以是乙個模板 已結有了vector新增成員,就需要成員函式 關鍵字typename 作為型別前的識別符號 template...
C 容器和演算法
c 容器和演算法 容器部分 順序容器 vector deque list 通過元素在容器中的位置順序儲存和訪問元素 vector 支援快速隨機訪問 容器介面卡為stack後進先出棧 deque 雙端佇列 容器介面卡為priority queue有優先順序管理的佇列 list 支援快速插入 刪除 容器...
C 容器和演算法
1.map和set有什麼區別,分別又是怎麼實現的?2.stl的allocator?c 容器的空間配置器,由兩級分配器構成,大於128位元組,呼叫一級配置器,malloc free,realloc 小於128位元組,預設二級配置器,分配記憶體池。為了便於記憶體管理,減少記憶體碎片產生 3.stl 標準...