c++ - 正确别名 vector

标签 c++ templates vector alias

我在别处找不到答案,所以我想我只需要问这个:我正在尝试为一个 vector (其中存储了 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 ,但现在索引与以下内容相比是相反的:

vector <int*> current1 = ENGINES[1].SITE;

出于某种原因 *current[i][j] = current1[j][i]。我的语法有错误吗?

最佳答案

我相信你的问题是 []优先级高于一元 * .所以你得到 *(current[j][k])而不是 (*current)[j][k] ,这就是您想要的。

但是,您可以通过仅采用引用而不是指针来消除该问题:

vector <int*>& current = (ENGINES[i].SITE);然后删除你的额外加载 *访问 current 的运算符(operator).

关于c++ - 正确别名 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15908172/

相关文章:

c# - Make efficient - 在 c# 中使用两个向量的对称矩阵乘法

c++ - 比较 vector 中的队列大小

c++ - 无继承多态性

c++ - 尽管使用了 C++14 功能,为什么使用 C++11 编译成功?

c++ - strftime 在 iOS 上返回错误的星期几

php - 使用服务器端语言进行开发但部署到静态 HTML 的最佳方式

去反射(reflection)元编程/模板

c++ - 将字符地址存储到整数指针

C++ 模板正式排序规则

c++ - 非逻辑代码流/无效 vector 操作