提问者:小点点

C++如何将数组值解包为函数参数


我有一个字符串数组,我想将其解压缩为函数的参数,例如:

Blynk.SetProperty(V0,“labels”,“label1”,“label2”,“label3”);

其中字符串数组为:labels={“label 1”,“label 2”,“label 3”}

这个数组实际上是由指向具有'name'成员的对象的指针数组构建的,例如:

for (unsigned int i=0; i<NUM_OBJECTS; i++) {
    labels[i] = objects[i]->name;
}

其中objects数组是在编译时定义的。

这可能吗?


共1个答案

匿名用户

那么,您可以执行如下操作:

#include <utility>
    
template <std::size_t ... Is>
void call(std::index_sequence<Is ...>, char const * labels []) {
    Blynk.setProperty(V0, "labels", labels[Is] ...);
}

int main() {
    char const * labels [NUM_OBJECTS] = { "l1", "l2", "l3" };
    call(std::make_index_sequence<NUM_OBJECTS>{}, labels);
    return 0;
}

但是,由于参数的数量在编译时已知,因此将标签存储在std::tuple中并简单地使用std::apply可能更有意义。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(c++|如何将|数组|值|解包|函数|参数)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?