[英]Allocation free std::vector copy when using assignment operator
當有兩個原始數據類型的std::vector
實例具有相同的大小和容量時,是否可以保證通過復制賦值運算符進行復制不會重新分配目標向量?
例子:
const int n = 3;
std::vector<int> a, b;
// ensure defined capacity
a.reserve(n);
b.reserve(n);
// make same size
a.resize(n);
b.resize(n);
// set some values for a
for (int i = 0; i < n; i++)
{
a[i] = i;
}
// copy a to b: allocation free?
b = a;
我只發現“否則,*this 擁有的 memory 可能會在可能的情況下被重復使用。” (C++11 起)在cppreference.com上。 我希望是“必須”而不是“可以”。
如果對於更一般的情況(例如“相同大小就足夠”)應該有肯定的答案,那就更好了。
如果不能保證,這種情況可能是Copying std::vector: prefer assignment or std::copy?的答案。 ,當首選std::copy
時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.