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

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐