通过函数中的不同名称引用全局向量

时间:2018-08-06 00:32:18

标签: c++ function pointers vector fstream

假设您有三个全局向量V1,V2和V3。

假设您有一个函数,可以对上述由int值确定的向量之一执行一组动作,例如VN [3] ++。

在python中,我会做类似的事情:

global:
    v1 = [1,2,3]
    v2 = [1,2,3]
    v3 = [1,2,3]
    lists = [v1, v2, v3]

def function (determiner):
    list = lists[determiner]
    list[1] += 1...

我认为从理论上讲,对于确定程序的每个可能值,我都可以有单独的ifs,但是将一段代码重复多次似乎是不好的代码。 (1)解决此问题的正确方法是什么?我以为我会使用指针,但是我今天才刚刚了解它们,而且我一直在努力使我的代码正常工作。这是我一直在尝试的代码示例。

   vector <int> counts0;
   vector <int> counts1;

   void editor(int determiner){
        if (determiner == 1) {
            vector<int> & count_l = counts1;
        }
        else if (determiner = 2) {
            vector<int> & count_l = counts2;
        }
        count_l[5]++;
    }

1 个答案:

答案 0 :(得分:1)

有两种方法可以实现此目标,具体取决于您的期望。如果std::lcm应该引用向量,请使用指针(正如您所说的,在索引之前请记住要取消引用)

lists

如果您想复制std::vector<int> a, b, c; std::vector<std::vector<int>*> lists = {&a, &b, &c}; void editor(int determiner) { (*lists[determiner])[5]++; } 中所有向量的副本,请不要使用指针(当您大量修改list时,这可能会很昂贵,只对const数据使用此方法)。

lists