gpt4 book ai didi

c++ - 何时返回 vector 迭代器而不是 vector ?

转载 作者:行者123 更新时间:2023-11-30 01:40:31 25 4
gpt4 key购买 nike

假设我们有一个函数 1:

vector<T>::iterator GetSomething()
{
vector<T> vec;

// Update vec with something...

return vec.begin();
}

另一个函数2:

vector<T> GetSomething()
{
vector<T> vec;

// Update vec with something...

return vec;
}

在什么情况下我们更喜欢函数 1 ?另外,该 vector 对象的生命周期是多少?我们如何知道迭代器是否指向空 vector ?可能需要传递一对迭代器来确定开始/结束。

最佳答案

您不应该将迭代器返回到本地分配的 vector 。这是一种未定义的行为。

解释非常简单:vector<T> vec;一旦您离开该功能,该功能就会被销毁。

第二个选项更好,并且很可能具有返回值优化,它将在应该返回的位置准确地构造 vector 。

关于c++ - 何时返回 vector 迭代器而不是 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43089205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com