Можно ли сделать массив пар - PullRequest
0 голосов
/ 25 апреля 2020

Я новичок в c ++, поэтому я хочу спросить, возможно ли создать массив пар в c ++ так же, как мы создаем вектор пары.

int n;
 cin>>n;
 array < pair <int,int> >v[n];

Я пытаюсь создать массив таким образом но не получая положительных результатов.

Ответы [ 2 ]

1 голос
/ 25 апреля 2020

Похоже, вы пытаетесь динамически выделить массив pair<int,int> s '. Предпочитайте std :: vector для такой задачи:

#include<vector>

int n;

cin>>n;

std::vector<pair<int,int>> v(n);

Что касается исходного вопроса, вы можете создать массивы pair<int,int> s ', либо массивы C в стиле, либо std :: arrays. , вам нужно знать размер во время компиляции:

int n;

cin >> n;


//C-style arrays
pair<int,int> a[n]; //this may work on some compilers, but is non-standard behaviour

//std::arrays
#include<array>

std::array<pair<int,int>,n> a; //this will not compile at all, "n" must be known at compile-time
0 голосов
/ 25 апреля 2020

вы можете с помощью std :: pair, но если вы хотите использовать стиль в стиле c и не зависеть от std, вы можете создать структуру

struct MyStruct
{
    int val1;
    int val2;
    char* description;
};

int main()
{
    MyStruct str[100];

}

или для современного использования std :: vector и std: : pair, как вы можете найти пример для другого ответа

вы также можете использовать std :: tuple вместо std :: pair для более чем двух значений

std :: map может быть полезно на основе ваше использование тоже

...