如何输出浮点数向量的向量?

时间:2014-02-27 01:56:52

标签: c++ iterator

非常基本的问题,但我无法理解如何输出它。

我有一个

vector< vector<float> > distance_table;

里面充满了各种各样的数字。现在我要输出这些。

这是我的代码:

 vector< vector<float> > :: iterator row;
    vector<float> ::iterator col;
    for (row = distance_table.begin(); row !=distance_table.end(); row++)
    {
        for (col = row->begin(); col !=row->end(); col++)
        {
            cout << distance_table[row][col] <<endl;

        }

    }

distance_table [row] [col]不起作用。这显然不是正确的语法。什么是正确的语法?

4 个答案:

答案 0 :(得分:4)

您无法使用迭代器进行索引。您可以使用整数,也可以使用迭代器,但不能同时使用两者。您可以取消引用第二个迭代器以获取特定向量中的值。

vector< vector<float> > :: iterator row;
vector<float> ::iterator col;
for (row = distance_table.begin(); row !=distance_table.end(); row++)
{
    for (col = row->begin(); col !=row->end(); col++)
    {
        cout << *col << endl;
    }

}

答案 1 :(得分:2)

col是内部向量的迭代器,因此您只需要取消引用它以获取值:

cout << *col << endl;

答案 2 :(得分:1)

最简单的方法是使用基于范围的语句。例如

for ( const std::vector<double> &v : distance_table )
{
   for ( double x : v ) std::cout << x << ' ';
   std::cout << std::endl;
}

至于代码,那么如果你想使用下标运算符,你应该使用对向量元素的索引访问来代替迭代器。

例如

typedef std::vector<std::vector<double>>::size_type size_type;

for ( size_type i = 0; i < distance_table.size(); i++ )
{
   for ( size_type j = 0; j < distance_table[i].size(); j++ )
   {
      std::cout << distance_table[i][j] << ' ';
   }
   std::cout << std::endl;
}

答案 3 :(得分:0)

一种做你想做的事的方法。请注意,虽然使用迭代器同样好,但这种方法不使用迭代器。

#include <vector>
#include <iostream>

using namespace std;

int main(int argc, char **argv)
{
    vector< vector<float> > distance_table;

    vector<float> a {0, 1};

    distance_table.push_back(a);
    for (auto i = 0; i <distance_table.size(); i++)
    {   
        for (auto j = 0; j <distance_table[i].size(); j++)
        {   
            cout << distance_table[i][j] << endl;

        }     
    }
}
相关问题