C++ 中求string和vector容器大小、長度

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容器中可以用它算出大小

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章