0

我如何创建一个一维数组,该数组的每个单元格都可以存储两个元素(i,j)?例如 array[0] 返回两个单元格 i, j 和 array[1] 返回两个下一个单元格和 ... 。

4

3 回答 3

5

你需要的是一个结构

struct mydata
{
    int i;
    int j;
};

然后你可以在你的主要做:

mydata x[5];

x[0].i = 1;
x[0].j = x[0].i++;

等等

于 2013-05-09T09:56:36.427 回答
5

您应该使用成对的向量:

std::vector<std::pair<TI, TJ>> v;

WhereTITJ分别是您的第一个和第二个单元格元素的类型。

然后像这样添加元素:

v.push_back(std::make_pair(i, j));

并通过以下方式访问它们:

v[0].first // first cell
v[0].second // second cell
v[1].first // and so on
...
于 2013-05-09T09:58:45.040 回答
4

这可以通过多种方式实现。您可以使用std::vector来创建数组,并将std::pair<T, U>其用作元素类型,在哪里T以及U是您想要的任何类型。

std::vector<std::pair<T, U>> vec;

在 C++11 中,您也可以使用std::tuple(如果您希望每个单元格超过 2 个元素),

std::vector<std::tuple<T, U, Z>> vec;

或者,如果您想要“命名”元素,您可以使用自定义结构/类:

struct Foo {
  T i;
  U j;
};

std::vector<Foo> vec;
于 2013-05-09T09:57:35.843 回答