是否可以制作成对的阵列

问题描述 投票:0回答:2

我是C ++的新手,所以我想问问,是否有可能在c ++中创建一个成对数组,就像我们创建一个成对向量一样。

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

我正在尝试像这样制作数组,但没有得到积极的结果。

c++ vector std-pair
2个回答
1
投票

似乎您正在尝试动态分配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
投票

您可以使用std :: pair但是,如果您想使用c样式而不依赖于std,则可以创建一个struct

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

int main()
{
    MyStruct str[100];

}

或对于现代使用std :: vector和std :: pair的方式,您可以在其他答案上找到示例

您还可以使用std :: tuple代替std :: pair来获取两个以上的值

std :: map也可能根据您的使用情况有用

© www.soinside.com 2019 - 2024. All rights reserved.