【发布时间】:2017-04-02 14:27:31
【问题描述】:
我想使用现有视图进行连接。在代码中:
auto rng = view::empty<vector<int>>();
for(int i{0}; i < 5; ++i)
{
vector<int> const & v{foo()}; // returns a reference
rng |= view::concat(v); // doesn't compile - error: no viable overloaded '|='
};
换句话说 - 我如何为多个直到运行时才知道数量的向量创建视图?
【问题讨论】:
-
newRange是什么类型,我们可以看到foo()函数吗?还有v是干什么用的? -
@Galik 我更新了代码。
foo()函数返回一个 const 引用,但它与我的问题无关。 -
我认为用范围很难做到这一点。考虑具有不同元素的 n 个范围。现在整个范围的 begin() 和 end() 指向第一个的 begin() 和最后一个的 end() ,在它之间必须跟踪我们是否在第 k 个范围的末尾,并且移动到第 (k+1) 个。
view::concat在编译时通过大量机器实现了这一点。