【问题标题】:Dynamically allocation for a map pointer value动态分配映射指针值
【发布时间】:2013-11-10 02:12:45
【问题描述】:

假设我有一个类,其中包含一个带有指针类型键的映射:

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

我想要的是,当我第一次引用映射键时,我需要已经为“n”个元素分配的“Base*”指针。我不能在构造函数中做这个分配,因为映射键值只会在运行时知道。不知道什么是最好的解决方案。

【问题讨论】:

  • 首先,你的意思是“价值”,而不是“关键”,对吧?其次,n 是如何以及何时确定的?它是编译时常量吗?

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


【解决方案1】:

“不确定什么是最好的解决方案”

我会说避免动态分配的 C 样式数组将是一个好的开始。也许代替

map<string, Base*> m;

你可以使用:

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

"当我第一次引用映射键时,我需要已经为 "n" 个元素分配的 "Base*" 指针"

你可以这样做:

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];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多