【发布时间】:2013-04-01 06:01:25
【问题描述】:
我无法在其他地方找到答案,所以我想我只需要问这个:我正在尝试获取一个向量的别名(其中存储了 int 指针),如下所示:
void conversion(Engine * ENGINES)
{//The Engine class has a vector of int* as a public data member called SITE
for (int i = 0; i < 3; i++)
{
vector <int*>* current = &(ENGINES[i].SITE);//the problematic line
int j_max = current -> size();
cout << j_max << endl;
for (int j = 0; j < j_max; j++)
{
for (int k = 0; k < 3; k++)
{
if (*current[j][k] == 2)
*current[j][k] = 1;
if (*current[j][k] == -1)
*current[j][k] = 0;
}
}
}
}
问题在于 *current[a][b] 的索引似乎存在反转。我希望能够将 current 用作法线向量,但现在与以下相比,索引是相反的:
vector <int*> current1 = ENGINES[1].SITE;
所以*current[i][j] = current1[j][i] 出于某种原因。我的语法有错误吗?
【问题讨论】:
-
请张贴“SITE”声明。我怀疑你真正想要的是一个引用,而不是一个指针。这将允许编译器进行更好的优化。
-
类引擎 { 公共:矢量
站点; }; SITE 是一个存储多个 int[3] 数组的向量 -
我之前使用 ENGINES[ENGINE_NO].SITE.push_back(SCORES); 填充了 SITE;在一个循环中
标签: c++ templates vector alias