// VERSION 1
struct Range { int begin, end; };
inline Range getRange()
{
int newBegin, newEnd;
// do calculations
return {newBegin, newEnd};
}
struct Test
{
std::vector<Range> ranges;
inline void intensive()
{
ranges.push_back(getRange());
// or ranges.emplace_back(getRange());
// (gives same performance results)
}
};
// VERSION 2
struct Range { int begin, end; };
struct Test
{
std::vector<Range> ranges;
inline void intensive()
{
int newBegin, newEnd;
// do calculations
ranges.emplace_back(newBegin, newEnd);
}
};
版本 2总是比版本 1快。
事实是,getRange()
被多个类使用。如果我要应用版本 2,将会有很多代码重复。
还有,我不能通过ranges
作为对 的非常量引用传递getRange()
,因为其他一些类使用 astd::stack
而不是 a std::vector
。我将不得不创建多个重载并有更多的代码重复。
有没有一种通用的方法/习惯来取代返回值?