给定的是一个 std::array
,它包含 IMyClass
的子类的实例:
std::array<std::shared_ptr<IMyClass>, 20> myArr;
在索引位置 0、5 和 10
std::make_shared<RareSubClass>()
应该在所有其他索引上分配
std::make_shared<FrequentSubClass>()
实现此目标的最佳方法是什么?
最佳答案
使用一个小的辅助函数很容易在运行时初始化该数组:
void init_array(std::array<std::shared_ptr<IMyClass>, 20>& arr) {
int slot = 0;
for(auto& subclass : arr) {
switch(slot) {
case 0:
case 5:
case 10:
subClass = std::make_shared<RareSubClass>();
break;
default:
subClass = std::make_shared<FrequentSubClass>();
break;
}
++slot;
}
}
关于c++ - 在特定位置用元素填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40494246/