调用 std::vector::clear() 会将 std::vector::capacity() 设置为零吗?

Will a call to std::vector::clear() set std::vector::capacity() to zero?(调用 std::vector::clear() 会将 std::vector::capacity() 设置为零吗?)
本文介绍了调用 std::vector::clear() 会将 std::vector::capacity() 设置为零吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

限时送ChatGPT账号..

如果我在向量上使用 .reserve(items),向量将分配足够的内存来让我猜测我需要的项目数量.

If I use .reserve(items) on a vector, the vector will allocate enough memory for my guess of the number of items that I'll need.

如果我以后使用 .clear(),这只是清除向量还是保存我之前定义的储备?

If I later on use .clear(), will that just clear the vector or save my earlier defined reserve?

谢谢.

推荐答案

指定 std::vector::clear() 影响大小.它可能不会影响容量.要重置容量,请使用交换技巧:

It is specified that std::vector<T>::clear() affects the size. It might not affect the capacity. For resetting the capacity, use the swap trick:

    std::vector<int> v1;

    // somehow increase capacity

    std::vector<int>().swap(v1);

注意:由于这个旧答案仍然得到赞成(因此人们阅读它),我觉得有必要添加C++11 添加了 std::vector<...>::shrink_to_fit(),它请求向量删除未使用的容量.

Note: Since this old answer is still getting upvotes (thus people read it), I feel the need to add that C++11 has added std::vector<...>::shrink_to_fit(), which requests the vector to remove unused capacity.

这篇关于调用 std::vector::clear() 会将 std::vector::capacity() 设置为零吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

OpenGL transforming objects with multiple rotations of Different axis(OpenGL 变换不同轴多次旋转的对象)
GLFW first responder error(GLFW 第一响应者错误)
SOIL not linking correctly(SOIL 连接不正确)
Core profile vs version string? Only getting GLSL 1.3/OGL 3.0 in mesa 10.0.1(核心配置文件与版本字符串?在 mesa 10.0.1 中只获得 GLSL 1.3/OGL 3.0)
What is the range of OpenGL texture ID?(OpenGL 纹理 ID 的范围是多少?)
How taxing are OpenGL glDrawElements() calls compared to basic logic code?(与基本逻辑代码相比,OpenGL glDrawElements() 调用的繁重程度如何?)