Итерация по векторному столбцу C ++

0

Я хочу перебрать всю колонку, содержащую тип double и делить каждое значение на размер столбца. Это даст мне частоту. Я бы не стал делать это в массиве или любом другом типе данных. Я все еще узнаю о векторах. Вот двумерный векторный тип, который я пытаюсь манипулировать

vector<pair<char, double>> output;
Теги:
vector
2d

3 ответа

2
Лучший ответ

Если у вас есть С++ 11:

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

или с С++ 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

Вы можете обрабатывать вектор так же, как массив, и обращаться к элементам с помощью []. Например:

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
}
1

std :: pair - это шаблон структуры, который обеспечивает способ хранения двух гетерогенных объектов как одного элемента.

если у вас есть вектор pairs это означает, что вы будете получать доступ к данным через парный интерфейс. Вы можете получить первые данные пары через 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;
    }
} 

в С++ 11 это (как обычно) можно сделать намного проще:

for (auto & i : output)
{
   cout << i->first << "->" << i->second << "\n";
}
  • 0
    очень полезно, спасибо!
  • 0
    Пара не является определенным кортежем. Пары могут иметь стандартную компоновку более широко, чем кортежи.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню