c STL剖析(4)之容器之array

2021-09-26 07:45:44 字數 3139 閱讀 7726

template < class t, size_t n > class array;

陣列是固定大小的序列容器:它們包含以嚴格線性順序排列的特定數量的元素。在內部,陣列不保留除其包含的元素之外的任何資料(甚至它的大小,這是乙個模板引數,在編譯時固定)它在儲存大小方面與使用語言括號語法宣告的普通陣列一樣高效。這個類只是為它新增了一層成員函式和全域性函式,因此陣列可以用作標準容器。與其他標準容器不同,陣列具有固定大小,並且不通過分配器管理其元素的分配。它們是封裝固定大小元素陣列的聚合型別。 因此,它們不能動態擴充套件或收縮。零大小的陣列是有效的,但不應取消引用它們。

std::array::iterator it;//迭代器

for(it = my_array.begin(); it != my_array.end(); ++it)

std::array::reverse_iterator r_it;//反向迭代器

for(r_it = my_array.rbegin(); r_it != my_array.rend(); ++r_it)

} std::array::const_iterator c_it;//常量(const)迭代器

for(c_it = my_array.cbegin(); c_it != my_array.cend(); ++c_it)

std::array::const_reverse_iterator c_r_it;//常量反向迭代器

cout << "陣列的元素個數" << my_array.size() << endl;//返回陣列的元素個數

cout << "陣列的最大元素個數" << my_array.max_size() << endl;//由於array的大小固定,因此size()、max_size()大小一致

cout << (my_array.empty() ? "陣列為空" : "陣列不為空") << endl;

return 0;

}結果:

陣列的元素個數5

陣列的最大元素個數5

陣列不為空

cout << char_array.data() << endl;//.data()返回array第乙個元素的位址

return 0;

}

結果:

1

10陣列第乙個元素: 1

陣列最後乙個元素: 13

my_array.fill(2);//將陣列元素全部賦為乙個值,如果之前有值,將會被覆蓋掉

for(auto i : my_array)

my_array.swap(your_array);//交換兩個格式一樣array所有元素的值

for(auto i : your_array)

for(auto i : my_array)

return 0;

}

結果;

}結果:

a and b are equal

b and c are not equal

b is less than c

c is greater than b

a is less than or equal to b

a is greater than or equal to b

比較兩個array之間的大小關係,「==」、「<=」、「>=」、「!=」是對每乙個元素進行比較,如果所有元素都符合才為真。「」則比較第乙個不相等的元素。

c STL容器之map容器

1.map中所有的元素都是pair 2.pair元素中第乙個元素為key,第二個元素為value 3.所有元素都會根據鍵值自動排序 4.map中不允許有重複的鍵,multimap中允許有重複的鍵 優點 可以根據key快速的找到value 一 建構函式 mapmp map const map mp 二...

c STL容器之deque容器

deque是雙端陣列。deque和vector的區別 deque內部工作原理 deque內部有個中控器,維護每段緩衝區中的內容,緩衝區中存放著真實資料。中控器維護的是每個緩衝區的位址,使得使用每個deque時像一塊連續的記憶體空間。deque容器的迭代器是支援隨機訪問的。一 deque建構函式 de...

C STL之堆疊容器

stack堆疊是乙個後進先出的線性表,插入和刪除都只能在表一端進行,插入元素的一端成為棧頂 stack top 而另一端則稱為棧底 stack bottom 插入元素稱為入棧 push 刪除元素稱為出棧或彈棧 pop 使用該容器時需要包含 include 標頭檔案 定義stack物件的示例 如下 s...