动态分配映射指针值

时间:2013-11-10 02:12:45

标签: c++ arrays map member dynamic-allocation

假设我有一个包含带指针类型键的地图的类:

class Base;
class App
{
  private:
    size_t n;
    map<string, Base*> m;
};

我想要的是,当我第一次引用地图密钥时,我需要已经为“n”元素分配的“Base *”指针。我无法在构造函数中执行此分配,因为映射键值只能在运行时获知。不确定什么是最佳解决方案。

1 个答案:

答案 0 :(得分:1)

&#34;不确定什么是最佳解决方案&#34;

我会说避免动态分配的C风格数组将是一个良好的开端。也许不是

map<string, Base*> m;

你可以使用:

map<string, std::vector<Base> > m;

&#34;当我第一次引用地图键时,我需要&#34; Base *&#34;指针已经分配给&#34; n&#34;元素&#34;

你可以这样做:

std::vector<Base>& getVal(const std::string& key) {
    if (m.count(key) > 0 && m[key].size() > 0)
        return m[key];
    m[key] = std::vector<Base>(10); // n
    return m[key];
}