我有一些预定义值的静态const向量,我想创建一个新的(可能是指针/ ref),它将包含自定义值(来自某处)(如果存在)或来自预定义值的值。此外,我真的不想将预定义的值复制到新的值。
以下代码(有错误)或多或少地描述了这种情况:
static const std::vector<int> defvals = { 1, 2, 3, ... };
const std::vector<int>& real = defvals;
std::vector<int> custom;
if (hasCustom) {
custom.push_back(1); ...
}
real = custom; // **not possible**
....
for (int val : real) {
// do smth
}
答案 0 :(得分:0)
您可以使用ternary operator轻松完成此操作,只需在填充custom
后声明static const std::vector<int> defvals = { 1, 2, 3, ... };
std::vector<int> custom;
if (hasCustom) {
custom.push_back(1); ...
}
// Get a reference to the correct vector.
const std::vector<int>& real = hasCustom ? custom : defvals;
for (int val : real) {
// do smth
}
。
locArr[0] = l->xloc;
locArr[1] = l->yloc;
push(s, locArr);