目前我有这个代码主干:结构v[myStruct]
的向量。它的大小为3.我将这些结构命名为myStruct_A
,myStruct_B
和myStruct_C
。每段代码几乎相同,但其名称为后缀。
SomeMap someMap_A;
for (auto& pair : myStruct_A.hashMap) {
SomeStruct someStruct = foo(pair);
someMap_A[someStruct.key] = someStruct.value;
anotherStruct_A[someStruct.nameX] = someStruct.bundle;
}
someVector.push_back[someMap_A];
所有三个A,B,C都需要做上述事情。这里的问题是,如果使用函数,我不知道如何分离和指定名称。我需要获得几个基于所有这三个myStruct
s'的数据向量。输出。
答案 0 :(得分:0)
您可以使用宏执行此操作。例如,这是一个简化版本:
#define process(i, suffix) some_vect_ ## suffix.push_back(i); \
some_set_ ## suffix.insert(i);
int main() {
std::vector<int> some_vect_A, some_vect_B, some_vect_C;
std::set<int> some_set_A, some_set_B, some_set_C;
for (int i = 0; i < 100; i++) {
int val = rand();
process(val, A); // adds `val` to `some_vect_A` and `some_set_A`
process(val, B); // adds `val` to `some_vect_B` and `some_set_B`
process(val, C); // adds `val` to `some_vect_C` and `some_set_C`
}
}
这个特殊的演示代码非常无意义(它在所有三个集合和所有三个向量中产生相同的结果),但确实显示了如何进行所需的操作。