我有这个奇怪的问题
vector<unsigned int[3]> tris;
for (unsigned int i = 0; i < idx.size() - 2; i++) {
unsigned int push[] = {idx[i], idx[i+1], idx[i+2]};
tris.push_back(push); //<- this is where it goes belly up
}
Run Code Online (Sandbox Code Playgroud)
代码片段应该将三角形条带索引列表解析为三角形索引,但不会在vs10下编译.思考?
AnT*_*AnT 20
不,除非你将数组包装成struct或使用类似的东西std::array.
裸C样式数组类型不可复制或可分配,这使得它不适合用作标准容器元素.
PS应该注意的是,C++ 11转而采用更精细的(按方法)方法来指定容器元素类型的要求,而不是C++ 03使用的更广泛的方法.上述不合格性声明基于C++ 03.我还没准备好说它对C++ 11来说也是如此无条件......但是如果你坚持push_back在你的代码中使用它,即使在C++ 11中也是如此.
PPS在C++ 11中,人们可以使用std::list裸C样式数组并使用emplace构建新元素.但不是std::vector.