Массив из 1 пары целых чисел - PullRequest
1 голос
/ 28 марта 2012

Я хотел бы иметь массив (или вектор), и в каждой позиции я хотел бы хранить пару целых чисел, как это.

(1, 999)
(15, 1000)
(19, 1897)
etc..

Теперь я знаю, что могу иметь список карт, но я чувствую, что это перебор.

Есть идеи?

Ответы [ 4 ]

4 голосов
/ 28 марта 2012

В c ++ 11 вы можете использовать std::tuple, чтобы сделать это следующим образом:

#include <vector>
#include <tuple>
#include <iostream>

int main()
{
    std::vector<std::tuple<int, int> > intPairs;
    intPairs.emplace_back(1, 999);
    intPairs.emplace_back(15, 1000);
    intPairs.emplace_back(19, 1897);
    std::cout << std::get < 0 > (intPairs[0]) << std::endl;
}
4 голосов
/ 28 марта 2012

Я думаю, что вы хотите использовать pair<int, int> здесь как элемент vector<T>.Это позволяет вам

std::vector<std::pair<int, int>> vector;

Это немного удобнее использовать с typedef.

typedef std::pair<int, int> intPair;
...
std::vector<std::pair<int, int>> vector;
vector.push_back(intPair(1, 999));
vector.push_back(intPair(15, 1000));
2 голосов
/ 28 марта 2012

В C ++ 11 вы можете сделать это:

std::vector<std::pair<int, int>> pairs = {
   {1, 999},
   {15, 100}, 
   {19, 187},
   {29, 177},
   //and so on
};

В C ++ 03 вы должны вручную добавить каждую пару к вектору, используя push_back(), как объясняет @JaredPar в своемответ или вы можете использовать insert(), если хотите вставить его в определенную позицию в векторе.

1 голос
/ 28 марта 2012

Используйте std :: pair в качестве элементов в массиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...