假设您有三个全局向量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]++;
}
答案 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