c++ - 遍历多维 vector (使用 Auto 关键字?)

标签 c++ vector iterator

有没有一种迭代多维 vector 的优雅方法?比如说,你有一个 6D vector ,尽管我认为 2D 就足够了。有点像

vector< vector< int > myVector (6, vector<int> (5));

有没有一种很好的方法来迭代它,从 myVector[0][0]、myVector[0][1]、...等开始??我在更大的维度上尝试它,并使用 Auto 关键字来生成一个迭代器,但它并不好。这是我正在尝试的:

for(auto it = myVector.begin(); it < myVector.end(); ++it)
    std::cout << *it;

但是它不编译。请原谅我对STL中迭代器的生疏理解,已经很久了......

最佳答案

itvector<vector<int>>::iterator ,并在应用 * 之后你会得到一个 vector<int> ,无法打印出来。您需要遍历循环:

for(auto i1 = myVector.begin(); i1 != myVector.end(); ++i1) // loops over the "external" vector
    for(auto i2 = i1->begin(); i2 != i1->end(); ++i2) // loops over the "internal" vectors
        std::cout << *i2;

如果您有任意尺寸,您可以使用以下内容:

template <typename T>
void printVar(const T& v)
{
    std::cout << v;
}

template <typename T>
void printVar(const std::vector<T>& v)
{
    for (auto i = v.cbegin(); i != v.cend(); ++i)
    {
        printVar(*i);
    }
}

Sample test.

关于c++ - 遍历多维 vector (使用 Auto 关键字?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13411374/

相关文章:

c++ - 错误 : Element <EnableEnhancedInstructionSet> has an invalid value of "NoExtensions"

c++ - 重新分配 std::map::value_type& 是否安全?

c++ - 我正在尝试为我的 DynamicArray 类创建一个迭代器。为什么 STL 排序不能与我的迭代器一起使用?

python - 如何屏蔽 Python 3 嵌套字典以返回仅包含某些项目的新字典?

c++ - Qt creator 4 找不到QCamera

C++:可以编写忽略 const 赋值的代码吗?

c++ - QSyntaxHighlighter 突出显示与 QRegExp 匹配的部分

c++ - vector 没有被插入

c++ - STL vector 中的内存映射文件存储

c++ - 有人可以解释为什么这个 vector 删除操作不能正常工作吗?