Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在多维向量中迭代(使用Auto关键字?)_C++_Vector_Iterator - Fatal编程技术网

C++ 在多维向量中迭代(使用Auto关键字?)

C++ 在多维向量中迭代(使用Auto关键字?),c++,vector,iterator,C++,Vector,Iterator,有没有一种优雅的迭代多维向量的方法?比如说,你有一个6D向量,尽管我认为2D就足够了。差不多 vector< vector< int > myVector (6, vector<int> (5)); 但它没有编译。请原谅我对STL中迭代器的生疏理解,这是一个很长的时间…它是一个向量::迭代器,在应用*之后,你会得到一个无法打印出来的向量。您需要在循环上循环: for(auto i1 = myVector.begin(); i1 != myVector.end();

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

vector< vector< int > myVector (6, vector<int> (5));
但它没有编译。请原谅我对STL中迭代器的生疏理解,这是一个很长的时间…

它是一个向量::迭代器,在应用*之后,你会得到一个无法打印出来的向量。您需要在循环上循环:

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);
    }
}
它是一个向量::迭代器,在应用*之后,您将返回一个无法打印的向量。您需要在循环上循环:

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);
    }
}

看,也许答案可以推广到展平任意指定数量的维度。看,也许答案可以推广到展平任意指定数量的维度。这就是我害怕的,也是我现在正在做的。我希望有一种方法可以做到这一点,而不必为每一个额外的维度添加另一个循环?你在向量上迭代为什么不迭代另一个向量?@JoshuaJefferies:我添加了代码,允许你打印任意维度的向量。另外,每个循环使用一个for-each会很好,但我当前的编译器有点落后,我无法用for-each循环进行测试,所以我选择了自动样式的循环。这是我害怕的,也是我现在正在做的。我希望有一种方法可以做到这一点,而不必为每一个额外的维度添加另一个循环?你在向量上迭代为什么不迭代另一个向量?@JoshuaJefferies:我添加了代码,允许你打印任意维度的向量。另外,for-each循环本来很好用,但我当前的编译器有点落后,我无法测试for-each循环,所以我选择了自动样式的循环。