c++ - 在特定位置用元素填充数组

标签 c++ arrays pointers inheritance polymorphism

给定的是一个 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/

相关文章:

javascript - 如何创建一个函数,当作为数组元素放置时会产生多个数组元素?

javascript - 具有 Reduce 和 Filter 的数组

excel在计算单元格数量时指向单元格

具有受限方法访问的 C++ 指针

c - 内联汇编: Passing pointers to a function and using it in that function in assembly

c++ - 所有后缀的最长前缀字符串长度

c++ - 禁用 RTTI 的 dynamic_cast

c++ - 类中的 "this"指针

c++ - 函数、数组和动态数组

arrays - Swift 数组随机插入和删除非常慢