![]() |
1
10
你更有可能使用
这个
|
![]() |
2
6
这个
一
更新 嗯,我看我误解了这个问题,事实上我认为我从未在std::string或std::vector上使用过capacity(),似乎有任何原因,因为无论如何你都必须调用reserve。 |
![]() |
3
3
它给出了字符串可以包含的字符数,而无需重新分配。我认为在分配代价高昂的情况下,这可能很重要,您希望避免这种情况,但我必须说,这是一个字符串成员函数,我从未在真正的代码中使用过。 |
![]() |
4
2
如果要向字符串中添加大量字符,则可以使用它进行一些性能优化。在开始字符串操作之前,您可以检查容量,如果容量太小, reserve 在一个步骤中所需的长度(而不是让它连续几次重新分配更大的内存块,这将是一个性能消耗)。 |
![]() |
5
2
字符串有容量和大小。容量指示字符串在必须分配更多内存之前可以容纳多少字符。大小指示当前保留的字符数。
如果要增加字符串的大小,这一点非常重要。当连接到字符串时,
向量函数与相同函数的基本相同。
就我个人而言
|
![]() |
6
1
几乎没有任何相关的用途。它类似于std::vector::capacity。然而,字符串最常见的用法之一是赋值。当分配给std::string时,其.capacity可能会更改。这意味着一个实现有权忽略旧的容量并精确地分配足够的内存。 |
![]() |
7
1
它真的不是很有用,可能只是为了对称
矢量的容量保证会影响调整大小的行为。将向量调整到小于或等于容量的值不会导致重新分配,因此不会使引用向量中元素的迭代器或指针失效。这意味着您可以通过调用向量上的reserve来预先分配一些存储,然后(小心地)通过调整大小或向后推(等等)向它添加元素,这在底层缓冲区不会移动的情况下是安全的。
没有这样的保证
猜猜看,
|