我有一个类的例子,它定义了一个函数run
,它依赖于对虚函数get_vars
的调用(我想到了行for (auto int_vars_it : get_vars()) ...
)。
我的问题是:我的示例的性能是否因为我在get_vars()
- 循环的上限使用for
的调用而减慢了?我担心该函数被调用每个循环实例,如果循环运行多次,可能会降低性能。
#include <iostream>
class Bas
{
protected:
using vars_type = std::vector<std::string>;
private:
vars_type vars_Base;
protected:
virtual vars_type &get_vars()
{
return vars_Base;
}
public:
void push_back(const std::string &str)
{
get_vars().push_back(str);
}
void run()
{
for (auto int_vars_it : get_vars())
{
std::cout << int_vars_it << " ";
}
}
};
int main()
{
Bas b;
b.push_back("aB");
b.run();
return 0;
}
答案 0 :(得分:1)
只会调用一次并返回对std::vector
的引用。在那之后,它将在某个时刻迭代矢量的内容,这些内容将被转换为经典的for
循环。