c++ - 通过创建循环来简化一些重复动作的代码
问题描述
下面是我对一系列整数类型端口执行数据重置的代码。
//note function: void resetData(int pin);
resetData(p00);
resetData(p01);
resetData(p02);
resetData(p03);
resetData(p04);
resetData(p05);
resetData(p06);
resetData(p07);
resetData(p10);
resetData(p11);
resetData(p12);
resetData(p13);
resetData(p14);
resetData(p15);
resetData(p16);
resetData(p17);
resetData(p50);
resetData(p51);
resetData(p80);
resetData(p81);
resetData(p82);
resetData(p83);
resetData(p84);
resetData(p85);
resetData(p86);
resetData(p87);
resetData(p110);
resetData(p111);
resetData(p112);
resetData(p113);
resetData(p114);
resetData(p115);
resetData(p116);
resetData(p117);
在上述代码中,有不同类型的端口(组合在一起),它们由resetData
. 有没有办法通过创建一些循环来简化这些长长的代码列表,而不改变 的定义resetData
?谢谢!
解决方案
您可以创建一个适用于引脚组的函数:
void myResetData(const std::vector<int> &pins)
{
for (auto pin : pins)
{
resetData(pin);
}
}
然后,使用它:
void f()
{
std::vector<int> group1{ p00, p01, p02, p03, p04, p05, p06, p07 },
group2{ p10, p11, p12, p13, p14, p15, p16, p17 };
myResetData(group1);
myResetData(group2);
}
要不就:
void f()
{
myResetData(std::vector<int>{ p00, p01, p02, p03, p04, p05, p06, p07 });
myResetData(std::vector<int>{ p10, p11, p12, p13, p14, p15, p16, p17 });
}
你甚至可以逃脱:
void f()
{
myResetData({ p00, p01, p02, p03, p04, p05, p06, p07 });
myResetData({ p10, p11, p12, p13, p14, p15, p16, p17 });
}
推荐阅读
- c# - Quartz.net - 无法保存作业组
- node.js - Can I setup a NestJS server on raspbian
- r - R 降价文件中的库
- rocksdb - RocksDB:太多固定的小尺寸 sst 文件
- python - 使用 Neo4j 将数据添加到图形数据库时出现关键错误。这个错误是什么意思?
- python - 将数据框转换为字典 - python
- javascript - 无法读取未定义的属性“拆分”(调试问题)
- server - OPC 服务器始终为 NULL
- image - OpenCV (cv2) DCT 和 IDCT 是如何工作的?
- prolog - Prolog:在重用相同列表时附加到列表(超出本地堆栈错误)