c++ 中的别名变量数组

An array of alias variables in c++

本文关键字:变量 数组 别名 c++      更新时间:2023-10-16

我想创建一个包含另一个数组变量的数组,并且变量应该作为别名复制(即不是按值(。

例如

int* x;
int* y;
int* z[4];   // What should I do if length of z is not known initially.
x =new int[2];
y= new int[2];
x[0]=1;
x[1] =2;
y[0]=3;
y[1]=4;
z[0] =&x[0];
z[1] = &x[1];
z[2] =&y[0];
z[3] =&y[1];

在这里,数组z是通过对xy的引用进行的。在"z"中所做的更改将在xy中看到,反之亦然。

我需要什么:
2(z现在是指向整数的指针数组。如何将其转换为整数数组?

3(由于指针难以管理,我如何获得与向量相同的功能。据我所知,向量不能存储引用。

数组

的概念是内存是顺序的。这意味着每个元素都紧随其后。(例如arr[0]是第一个元素的地址,这与*arr相同。如果你需要第二个元素,你将键入arr[1]这是(*arr)+1(。如果要创建一个包含其他两个数组元素的数组,则必须创建第三个数组并复制值(z[0] = a[0]; ...对于动态分配,您可以使用具有接受整数值的构造函数的向量。 std::vector<int> z = std::vector<int>(a.size() + b.size())

这是在不存储指针的情况下执行此操作的唯一方法。请注意,如果将某些内容从容器 a 复制到容器 b,然后在容器 a 中更改它,则容器 b 中不会更改。

而不是这个代码片段

 int *z;
 z = new int[N];     //N is integer.
 z = &x[0];

你应该写

 int **z;
 z = new int * [N];     //N is integer.
 z[0] = &x[0];

或者,您可以使用类模板std::vector<int *>而不是数组。