我正在尝试将数据从一种容器类型复制到另一种容器类型,容器都是二维向量,我使用 boost::combine 和 boost::tie 来迭代容器,代码构建良好但抛出 bad_alloc 时跑。我无法理解为什么像下面这样的简单代码会抛出 bad_alloc,我做错了什么?当容器是多维的时,还有哪些其他策略可以在容器之间复制数据。
#include <vector>
#include <iostream>
#include <boost/foreach.hpp>
#include <boost/container/small_vector.hpp>
#include <boost/range/combine.hpp>
#include <algorithm>
#include <tuple>
int
main(int ac, char **av)
{
std::vector<std::vector<int>> bv(1, std::vector<int>(4, 99));
boost::container::small_vector<boost::container::small_vector<int, 4>, 1> bvv;
decltype(bv)::value_type v1;
decltype(bvv)::value_type v2;
BOOST_FOREACH(boost::tie(v1, v2), boost::combine(bv, bvv)){
for ( auto &e : v1 )
v2.push_back( e );
}
return 0;
}