Как я могу сохранить пару чисел в C ++? - PullRequest
25 голосов
/ 29 января 2010

Я пытаюсь выучить C ++ и сейчас пишу программу, которая должна вывести список пар целых чисел.

Каков наилучший способ справиться с этим? У меня нет библиотеки boost, доступной на наших компьютерах linux в школе, поэтому я не верю, что смогу использовать boost :: tuple.

Есть предложения?

Ответы [ 3 ]

31 голосов
/ 29 января 2010

Посмотрите на std::pair<object, object>

EDIT:

Это стандартный C ++ и часть того, что известно как STL (Стандартная библиотека шаблонов). Это набор хороших структур данных, которые являются общими (то есть могут использоваться для хранения любого типа объекта C ++). Эта конкретная структура используется для хранения «кортежа» или пары чисел вместе. В основном это объект с членами «first» и «second», которые ссылаются на первый и второй объекты (любого типа!), Которые вы храните в них.

Так что просто объявите массив pair<int, int>, или еще лучше, используйте другой тип STL, называемый "вектор", чтобы создать список динамического размера pair<int, int>: vector<pair<int, int> > myList.

Эй, что ты знаешь! Список пар динамического размера уже существует, и он называется картой! Использовать его так же просто, как #include <map> и объявить map<int, int> myMap !!!

РЕДАКТИРОВАТЬ:

Да, как указывалось, карта хорошо "отображает" один объект на другой, поэтому вы не можете иметь повторяющиеся значения слева. Если это нормально, то карта - это то, что вы ищете, иначе придерживайтесь вектора пары .... или посмотрите на мультикарты.

std::map, std::multimap

19 голосов
/ 29 января 2010

Использовать std :: pair?

#include <utility>
#include <iostream>

int main() {
    std::pair <int, int> p = std::make_pair( 1, 2 );
    std::cout << p.first << " " << p.second << std::endl;
}

Вы можете составить вектор из пар:

typedef std::pair <int, int> IntPair;

...

std::vector <IntPair> pairs;
pairs.push_back( std::make_pair( 1, 2 ) );
pairs.push_back( std::make_pair( 3, 4 ) );
9 голосов
/ 31 января 2010

В то время как std :: pair - лучший подход для использования, я удивлен, что никто не упомянул решение pre-stl:

struct Pair {
    int first;
    int second;
};

Тревожно, что люди думают, что им нужна поддержка для такой тривиальной проблемы.

...