class SomeArrayInt {
int *a;
public SomeArrayInt() {
a = new int[1000];
n = 1000;
for(size_t i = 0; i < n; i++)
a[i] = 10;
}
int operator[](int k) {
if(n < k) {
delete [] a;
a = new int[k];
n = k;
for(size_t i = 0; i < n; i++)
a[i] = 10;
}
return a[k - 1];
}
~SomeArrayInt() {
delete [] a;
}
}
创建自己的类并在其中重载
operator[](我将在此处作为模板进行):NB可能是我哪里搞砸了,因为好久没写pros了,不过原理应该很清楚了。
如果问题是如何获得不超出负索引数组的索引,那么您可以像这样计算数组索引:
例如:
输出将是:
一般来说,不建议超出分配的内存,可能会出现分段错误。您可以在这样的阵列上创建一个错觉,例如,创建一个将预先预订阵列中一定数量的位置的类。
也许我在线程中犯了一个错误,但理论上是这样的。