[英]Can a std::vector be ='d to another std::vector?
說我有以下內容:
std::vector<int> myints;
然后我有一個返回int向量的函數:
std::vector<int> GiveNumbers()
{
std::vector<int> numbers;
for(int i = 0; i < 50; ++i)
{
numbers.push_back(i);
}
return numbers;
}
我可以這樣做:
myints = GiveNumbers();
會安全地做到這一點,以便myint的數字為0到49而沒有別的嗎? 這樣做會清楚以前在myint中可能出現的情況嗎? 如果不是最正確的方法嗎?
謝謝
是。 這很安全。 您將把GiveNumbers()
函數的結果復制到myints
。 它可能不是最有效的方法,但它是安全和正確的。 對於小向量,效率差異不會那么大。
是的,它將分配它,它將清除之前接收向量中的內容。
是的,事實上, GiveNumbers()
return numbers
是將向量復制到堆棧上。
當您使用operator=
,您將在新向量上獲得相同的內容
正如已經提到的,這是非常安全的,盡管不是最有效的方法。
為節省資源,最好通過引用傳遞矢量,並直接修改它。
void setNumbers(vector<int> &nums)
{
nums.resize(50);
for(int i = 0; i < 50; ++i)
{
nums[i] = i;
}
}
正如還提到的那樣,效率可能不會對非常小的向量產生巨大差異,但是對於較大的向量實際上可能是實質性的。
通過直接修改原始向量獲得的節省有兩種方式:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.