gpt4 book ai didi

c++ - BOOST_FOREACH 隐式使用引用?

转载 作者:太空狗 更新时间:2023-10-29 20:32:10 27 4
gpt4 key购买 nike

我想知道在调用之前获取对 vector 的引用是否有任何好处BOOST_FOREACH 或返回引用的方法调用是否会被自动使用?例如,以下两个循环中的哪一个将等同于第三个循环?

vector<float>& my_method();

void main()
{
// LOOP 1 -------------------------------
vector<float>& temp_vector = my_method();
BOOST_FOREACH(float element, temp_vector)
cout << element << endl;

// LOOP 2 -------------------------------
vector<float> temp_vector = my_method();
BOOST_FOREACH(float element, temp_vector)
cout << element << endl;

// Which loop is this one most like? ----
BOOST_FOREACH(float element, my_method())
cout << element << endl;
}

最佳答案

快速测试表明该函数被调用一次,并且没有发生与 BOOST_FOREACH 相关的复制。

#include <vector>
#include <iostream>
#include <boost/foreach.hpp>

struct X
{
X() {}
X(const X& ) { std::cout << "copied\n"; }
};

std::vector<X> vec(2);

//std::vector<X> method()
std::vector<X>& method()
{
std::cout << "returning from method\n";
return vec;
}

int main()
{
BOOST_FOREACH(const X& x, method()) {}
}

关于c++ - BOOST_FOREACH 隐式使用引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2361750/

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