通过向量列C ++迭代

时间:2013-10-08 01:02:25

标签: c++ vector 2d

我想遍历包含double类型的整个列,并将每个值除以列的大小。这会给我频率。我不会在数组或任何其他数据类型中执行此操作。我还在学习矢量。这是我试图操纵的2D矢量类型

vector<pair<char, double>> output;

3 个答案:

答案 0 :(得分:2)

如果你有C ++ 11:

for (auto & p : output)
{
   cout << p.first << " " << p.second << "\n";
}
std::cout << std::endl;

或使用C ++ 03

for (std::vector<std::pair<char, double> >::iterator it = output.begin(); 
     it != output.end(); ++it)
{
   cout << it .first << " " << it .second << "\n";
}
std::cout << std::endl;

答案 1 :(得分:1)

您可以将矢量视为数组,并使用[]访问元素。例如:

for (size_t i = 0; i < output.size(); ++i)
{
    pair<char, double>& element = output[i]; // access element i in the vector
    cout << element.first; // prints the first member of the pair
    cout << element.second; // prints the second member of the pair
}

答案 2 :(得分:1)

  

std :: pair是一个结构模板,提供了存储两个的方法   异构对象作为一个单元。

如果您有pairs向量,则表示您将通过pair界面访问数据。您可以通过first成员获得第一对数据,第二个数据通过second获得。

for(std::vector<std::pair <char, double> >::const_iterator vpci = arg.begin(); 
    vpci != arg.end(); ++vpci) {
        cout << vpci->first << "->" << vpci->second;
}

甚至更好,也许创建一个模板:

template <typename T1, typename T2>
void prn_vecOfPair(const std::vector<std::pair <T1, T2> > &arg, string sep ="") {
    for(std::vector<std::pair <T1, T2> >::const_iterator vpci = arg.begin(); 
        vpci != arg.end(); ++vpci) {
        cout << vpci->first << "->" << vpci->second << sep;
    }
} 

在C ++ 11中这个(像往常一样)可以更轻松地完成:

for (auto & i : output)
{
   cout << i->first << "->" << i->second << "\n";
}