它实际上是否保证以下减少容量技巧将"起作用"?
int main() {
std::string s = "lololololol";
s = ""; // capacity still non-zero
string(s).swap(s); // ?
}
Run Code Online (Sandbox Code Playgroud)
它对我来说似乎没有"起作用"(因为容量仍然不为零),而且我在标准中找不到任何东西,而不是"内容"必须在两者之间交换[这里,相同的]对象.
同样,对于序列容器:
int main() {
vector<int> v { 1,2,3,4,5 };
v.clear(); // capacity still non-zero
vector<int>(v).swap(v); // ?
}
Run Code Online (Sandbox Code Playgroud)
据我所知,这个"技巧"是半广泛使用的; 也许这种广泛采用是错误的?
(当然,在C++ 11中,我们shrink_to_fit[虽然没有绑定],但是这种做法没有实际意义.)
我的地形引擎有问题(使用DirectX).
我正在使用矢量来保存细节块的顶点.当块增加细节时,向量就会增加.
但是,当块减少其细节时,矢量的大小不会缩小.
所以,我的问题是:有没有办法缩小向量的大小?我试过这个:
vertexvector.reserve(16);
Run Code Online (Sandbox Code Playgroud)