string:
string str("hello world");
str.size();
str.length();
strlen(str.c_str());
end(str) - begin(str)
固定容器大小的array:
sizeof(array)/sizeof(array)[0];
end(str) - begin(str);
vector:
vector是可變大小容器,vector 的容量大小,是指在不分配更多內存的情況下可以保存的最多元素個數,這時 可能有 20 個元素,也可能沒有。vector 的大小是它實際所包含的元素個數,也就是有值的元素的個數。圖 1 對此做了說明:
顯然 vector 的大小不能超出它的容董。當大小等於容量時,增加一個元素就會導致更多內存的分配。對於一個 vector 對象來說,可以通過調用 size() 和 capacity() 函數來得到它的大小和容量。它們返回的是我們自己定義的無符號整型值。例如:
std::vector<size_t> primes { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41 ,43 ,47 };
std::cout << "The size is " << primes.size() << std::endl;
std::cout << "The capacity is " << primes.capacity() << std::endl;
primes.push_back(48);
std::cout << "The size is " << primes.size() << std::endl;
std::cout << "The capacity is " << primes.capacity() << std::endl;
輸出語句輸出的容器大小和容董都爲 15,這是由初始化列表決定的。然而,如果用 push_back() 函數添加一個元素,然後再輸出容器的大小和容量,這時大小變爲 16,容量變爲 30。當容器的大小等於容量時,容器每次增加多少容量,取決於算法的實現。一些實現可能會雙倍地增加容量。
注:迭代器是個好東西,STL容器中可以用它算出大小