cppreference使用它来描述 std::string_view:
std::basic_string_view
(C++17) -对字符串子序列的轻量级非拥有只读视图。
devtut 和 sodocumentation 也 使用它来描述 std::string_view :
C++17 引入了
std::string_view
,它只是一个非拥有范围的const char
s,可实现为一对指针或一个指针和一个长度。
和这里的各种其他问题和答案参考它,但我找不到它的含义的任何解释。
https://en.cppreference.com/w/cpp/container/vector说:
矢量的存储是自动处理的,根据需要扩展和收缩。
但我找不到“根据需要”发生收缩的情况。任何收缩操作都不会收缩 std::vector 的容量:
清除():
保持向量的capacity()不变
当调整到更小的尺寸时,向量容量永远不会减少,因为这会使所有迭代器无效
擦除():
在擦除点或擦除点之后使迭代器和引用无效,包括 end() 迭代器。
这意味着擦除点之前的迭代器和引用不会失效,如果容量更改则不会出现这种情况。
迭代器和对最后一个元素的引用以及 end() 迭代器均无效。
这同样适用于此。
Shrink_to_fit() 确实收缩了 std::vector,但它是在 C++11 中添加的,并且上面的句子(“并且收缩”)没有标记为仅适用于 C++11 及更高版本。此外,对shrink_to_fit()的显式调用不是自动的(“矢量的存储是自动处理的”)并且不会“根据需要”发生。
那么 std::vector 何时自动收缩其存储空间呢?