相关疑难解决方法(0)

我们可以依靠减少容量的技巧吗?

它实际上是否保证以下减少容量技巧将"起作用"?

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[虽然没有绑定],但是这种做法没有实际意义.)

c++ std

8
推荐指数
1
解决办法
1286
查看次数

跨流行工具链的标准容器重新分配乘数

容器喜欢std::basic_stringstd::vector在内部容量耗尽时执行自动重新分配.该标准规定,在重新分配后,.capacity() >= .size().

在执行重新分配时,主流工具链使用了哪些实际乘数?


更新

到目前为止,我有:

Dinkumware:1.5(配备MSVS和可能的ICC)

GNU libstdc ++:2(附带GCC和可能的ICC)

RW/Apache stdcxx:1.618

STLport:2

c++ implementation containers

6
推荐指数
1
解决办法
393
查看次数

标签 统计

c++ ×2

containers ×1

implementation ×1

std ×1