【发布时间】:2016-12-02 03:58:59
【问题描述】:
我有一个 2D 和 3D 矢量
using namespace std;
vector< vector<int> > vec_2d;
vector<vector<vector<int>>> vec_3d
我知道如何使用两个迭代器逐行迭代二维向量。第一个是“行”的迭代器,第二个是该“行”中“列”的迭代器。现在,我需要迭代二维向量,使第一个迭代器成为“列”的迭代器,第二个成为该“列”中行的迭代器,即按列。
【问题讨论】:
-
只使用索引。
-
只是检查是否有更好的方法使用索引。
-
根据我的经验,如果您有一个已编入索引的容器,迭代器的使用速度通常较慢,尤其是因为取消引用以获取值会增加开销。
-
如果您按列遍历二维数组,迭代器的开销将是您的问题中最少的。即使使用索引,这种模式否定缓存的事实也会极大地减慢内存访问速度。