我有以下代码:
#define ROTATIONS 135, 270, 0,0 , 315, 135
std::vector<float_t> rotations_vector;
for (int i = 0; i < 6; i++){
rotations_vector.push_back(ROTATIONS[i]);
}
如您所见,我想将此DEFINED整数序列卸载到向量中。但是,ROTATIONS不能像数组一样被索引。
不能更改ROTATIONS的定义。我必须将其解压缩到一个向量中。
答案 0 :(得分:2)
只需将宏放在初始化列表中即可。
#include <iostream>
#include <vector>
#define ROTATIONS 135, 270, 0,0 , 315, 135
int main(){
std::vector<float> rotations_vector = {ROTATIONS};
for (const auto& r : rotations_vector){
std::cout << r << ' ';
}
}
第std::vector<float> rotations_vector = {ROTATIONS};
行将扩展为std::vector<float> rotations_vector = {135, 270, 0,0 , 315, 135};
。
输出:
135 270 0 0 315 135
答案 1 :(得分:2)
出于对Bjarne的热爱,请勿这样做。有可能,但这也是使代码不可读的好方法。
要回答这个问题,您必须使用带有这些值的向量进行初始化,而不是复制(假设您使用的是C ++ 11):
std::vector<float> rotations_vector = {ROTATIONS};
或者在C ++ 11之前,您可以创建临时数组并从中复制:
float array[] = {ROTATIONS};
std::vector<float> rotations_vector(array, array + (sizeof(array)/sizeof(array[0])));
答案 2 :(得分:1)
使用构造函数获取整数列表:
#include <vector>
#include <iostream>
#define ROTATIONS 135, 270, 0,0 , 315, 135
int main() {
std::vector<float> rotations_vector{ ROTATIONS };
for (const auto& r : rotations_vector) std::cout << r << " ";
}