假设我有一个包含带有指针类型键的映射的类:
class Base;
class App
{
private:
size_t n;
map<string, Base*> m;
};
我想要的是,当我第一次引用映射键时,我需要已经为“n”个元素分配的“Base*”指针。我不能在构造函数中做这个分配,因为映射键值只会在运行时知道。不知道什么是最好的解决方案。
假设我有一个包含带有指针类型键的映射的类:
class Base;
class App
{
private:
size_t n;
map<string, Base*> m;
};
我想要的是,当我第一次引用映射键时,我需要已经为“n”个元素分配的“Base*”指针。我不能在构造函数中做这个分配,因为映射键值只会在运行时知道。不知道什么是最好的解决方案。
“不知道什么是最好的解决方案”
我想说避免动态分配的 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];
}