在 C++11 中是否有可能在不复制任何元素的情况下将许多std::vector
s 累积到容器中,每个 s 由给定的函数(我无法更改其 API)返回?std
std::vector<int> make_vect();
container acc; // what is container?
do {
acc.append(std::move(make_vect())); // how to implement this?
} while(acc.size() < n);
注意 1即使元素没有移动赋值运算符的移动构造函数,也不得复制元素,例如int
在示例中。因此,您可以移动一大块元素(通过复制指针),但不能移动单个元素。
注意 2必须container
允许使用单个迭代器对所有累积元素进行迭代。所以std::vector<std::vector<>>
或类似是不允许的。
显然,编写一些允许这样做的容器或使用std::list<std::vector<>>
并提供您自己的迭代器是很简单的,但是std
库是否在没有此类用户编写的添加的情况下提供了所需的功能?
看起来所请求的功能并没有什么特别奇怪的,我很惊讶即使使用 C++11 也很难(如果不是不可能的话)。