C++ C++;如何将数组值解压缩为函数参数
我有一个字符串数组,我想将其解包为函数的参数,如:C++ C++;如何将数组值解压缩为函数参数,c++,arrays,macros,C++,Arrays,Macros,我有一个字符串数组,我想将其解包为函数的参数,如: Blynk.setProperty(V0,“标签”、“标签1”、“标签2”、“标签3”) 其中字符串数组为: labels={“标签1”、“标签2”、“标签3”} 此数组实际上是由指向具有“name”成员的对象的指针数组构建而成的,如: for (unsigned int i=0; i<NUM_OBJECTS; i++) { labels[i] = objects[i]->name; } 这也是一个ARDUIO项目(没有
Blynk.setProperty(V0,“标签”、“标签1”、“标签2”、“标签3”)代码>
其中字符串数组为:
labels={“标签1”、“标签2”、“标签3”}
此数组实际上是由指向具有“name”成员的对象的指针数组构建而成的,如:
for (unsigned int i=0; i<NUM_OBJECTS; i++) {
labels[i] = objects[i]->name;
}
<强>这也是一个ARDUIO项目(没有访问完全C++特性)
这可能吗?好的,您可以执行以下操作:
#include <utility>
template <std::size_t ... Is>
void setProperties(std::index_sequence<Is ...>, char const * labels []) {
Blynk.setProperty(V0, "labels", labels[Is] ...);
}
char const * labels [NUM_OBJECTS] = { "l1", "l2", "l3" };
setProperties(std::make_index_sequence<NUM_OBJECTS>{}, labels);
#包括
模板
void setProperties(std::index_序列,char const*标签[]){
Blynk.setProperty(V0,“标签”,标签[Is]…);
}
char const*标签[NUM_OBJECTS]={“l1”、“l2”、“l3”};
setProperties(std::make_index_sequence{},标签);
但是,由于参数的数量在编译时是已知的,因此将标签存储在std::tuple
中并简单地使用std::apply
可能更有意义。您可以执行以下操作:
#include <utility>
template <std::size_t ... Is>
void setProperties(std::index_sequence<Is ...>, char const * labels []) {
Blynk.setProperty(V0, "labels", labels[Is] ...);
}
char const * labels [NUM_OBJECTS] = { "l1", "l2", "l3" };
setProperties(std::make_index_sequence<NUM_OBJECTS>{}, labels);
#包括
模板
void setProperties(std::index_序列,char const*标签[]){
Blynk.setProperty(V0,“标签”,标签[Is]…);
}
char const*标签[NUM_OBJECTS]={“l1”、“l2”、“l3”};
setProperties(std::make_index_sequence{},标签);
然而,由于参数的数量在编译时是已知的,因此将标签存储在std::tuple
中并简单地使用std::apply
可能更有意义。“其中对象数组是在编译时定义的。”向我们展示。一个适当的.我假定Blynk.setProperty(V0,“标签”,标签[0],标签[1],标签[2])代码>不太令人满意?@igortandtnik标签数组可以是任意大小的。@Asteroswithwings提供了示例。“其中对象数组是在编译时定义的。”向我们展示。一个适当的.我假定Blynk.setProperty(V0,“标签”,标签[0],标签[1],标签[2])
有些不令人满意?@igortandtnik标签数组可以是任意大小的。@Asteroswithwings提供的示例std::array
实现了元组接口,因此您可以将其与std::apply
一起使用:)太棒了!我不确定std::tuple是否可用于Arduino?std::array
实现了tuple接口,因此您也可以将其与std::apply
一起使用:)太棒了!我不确定std::tuple是否可用于Arduino?