收缩复制/粘贴代码的更好方法
better way to shrink copy/paste codes
目前我有这个主干代码:一个结构体的向量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的输出的数据向量。
您可以使用宏来完成此操作。例如,下面是一个简化的版本:
#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`
}
}
这个特定的演示代码相当无意义(它在所有三个集合和所有三个向量中产生相同的结果),但确实展示了如何进行所需的操作。
相关文章:
- 有没有更好的方法来编写这个c++代码
- Boost tread 代码在 VC++ 下编译,但不在 GCC 下编译:如何获得更好的调试信息
- 设计许多单例代码结构的更好方法
- 如何在嵌入式平台中管理不同引脚输出板的代码,以实现更好的HAL管理
- 为什么 C++ 代码实现的性能不比 python 实现更好?
- 牢记干净的代码的性能,什么更好
- 代码比较:就效率而言,哪种代码更好用?
- 如何编写更好、更干净的银行帐户代码版本
- 哪一个更好?使用C 代码中的System()函数或使用源代码
- <thread> 在 C++/CLI 代码中包含的代码中使用。寻找更好的解决方案
- 有没有更好的方法可以使此代码线程安全?线程局部静态似乎是一个生硬的工具
- 更好地线程化代码以减少计算时间的方法
- 调用包含所有所需代码的函数或内部包含所需代码的其他函数的函数更好?
- 当我们不关心返回值时,在 c++ 的代码片段中只调用一次函数的更好方法?
- 现代 C/C++ 编译器能否更好地优化标头中的代码
- 是否有任何情况将对象标记为 const 会导致更好的优化代码(使用优化编译时)
- 哪一个性能更好:使用函数或精确代码
- 我是否应该将 const 用于局部变量以获得更好的代码优化
- 我怎么能迁移视频为Windows代码更好的东西
- 如何使这段代码更好?(C++温度转换器)