首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++迭代器的有关问题

2012-04-21 
c++迭代器的问题。我想创建一个vector容器,容器类型为容器。例如我有一个struct Vertex{}然后我定义一个vec

c++迭代器的问题。
我想创建一个vector容器,容器类型为容器。
例如我有一个struct Vertex{};
然后我定义一个vector<vector<Vertex>> faces;
然后创建一个迭代器遍历faces。这样可以吗?如果可以请帮忙看下一下代码的问题在哪里?

C/C++ code
     std::vector<Vertex> clip(std::vector<Vertex> polygon);    std::vector<Vertex> clipedge(std::vector<Vertex> polygon, int x1, int y1, int x2, int y2);    std::vector<Vertex> decompose(std::vector<Vertex> polygon);        vector<Vertex> frontFace;    frontFace.push_back(cube[0]);    frontFace.push_back(cube[1]);    frontFace.push_back(cube[3]);    frontFace.push_back(cube[2]);    //front rightface, v2-v8-v6-v4    vector<Vertex> rightFace;    rightFace.push_back(cube[1]);    rightFace.push_back(cube[7]);    rightFace.push_back(cube[5]);    rightFace.push_back(cube[3]);    //front upface, v3-v4-v6-v5    vector<Vertex> upFace;    upFace.push_back(cube[2]);    upFace.push_back(cube[3]);    upFace.push_back(cube[5]);    upFace.push_back(cube[4]);    faces.push_back(frontFace);    faces.push_back(rightFace);    faces.push_back(upFace);for (vector<vector<Vertex>>::iterator iter = faces.begin();iter != faces.end(); ++iter)        {            vector<Vertex> clipped = decompose(clip(iter));//clip(iter)不合法啊在这。                }


请问大伙为什么?

[解决办法]

看 std::vector<Vertex> clip(std::vector<Vertex> polygon);

可知应该是:decompose(clip(*iter));
[解决办法]
迭代器 相当于 指针 
探讨
引用:
看 std::vector<Vertex> clip(std::vector<Vertex> polygon);

可知应该是:decompose(clip(*iter));

谢谢,请问这是为什么啊?

[解决办法]
不要再容器里套容器,效率会很差。用boost.multiarray。

热点排行