小编gli*_*10b的帖子

在编程的上下文中,“拥有”是什么意思?

cppreference使用它来描述 std::string_view:

devtutsodocumentation 也 使用它来描述 std::string_view :

C++17 引入了std::string_view,它只是一个非拥有范围的 const chars,可实现为一对指针或一个指针和一个长度。

和这里的各种其他问题和答案参考它,但我找不到它的含义的任何解释。

c++ string-view

5
推荐指数
1
解决办法
89
查看次数

std::vector 的存储何时自动收缩?

https://en.cppreference.com/w/cpp/container/vector说:

矢量的存储是自动处理的,根据需要扩展和收缩

但我找不到“根据需要”发生收缩的情况。任何收缩操作都不会收缩 std::vector 的容量:

清除()

保持向量的capacity()不变

调整大小()

当调整到更小的尺寸时,向量容量永远不会减少,因为这会使所有迭代器无效

擦除()

在擦除点或擦除点之后使迭代器和引用无效,包括 end() 迭代器。

这意味着擦除点之前的迭代器和引用不会失效,如果容量更改则不会出现这种情况。

pop_back() :

迭代器和对最后一个元素的引用以及 end() 迭代器均无效。

这同样适用于此。

Shrink_to_fit() 确实收缩了 std::vector,但它是在 C++11 中添加的,并且上面的句子(“并且收缩”)没有标记为仅适用于 C++11 及更高版本。此外,对shrink_to_fit()的显式调用不是自动的(“矢量的存储是自动处理的”)并且不会“根据需要”发生。

那么 std::vector 何时自动收缩其存储空间呢?

c++ memory-management vector stdvector

5
推荐指数
1
解决办法
151
查看次数

标签 统计

c++ ×2

memory-management ×1

stdvector ×1

string-view ×1

vector ×1