在堆上分配的向量上使用push_back

时间:2013-11-25 13:28:55

标签: c++ vector heap-memory c++98

我想在函数内创建一个字符串向量,并在堆上为它分配内存。为此,我正在使用

vector<string>* residuetable = new vector<string>();

当我尝试做

&residuetable.push_back(modulo((exponentiate("2", exponent02)), modulus));

即。尝试使用push_back函数将几个函数调用的返回值添加到向量中,我得到编译时错误

request for member 'push_back' in 'residuetable', which is of non-class type 'std::vector<std::string, std::allocator<std::string> >*

如何解决此问题并在堆上分配的向量末尾添加函数调用的结果?

3 个答案:

答案 0 :(得分:4)

使用->通过指针访问类成员:

residuetable->push_back(...);

然后再想一想你是否真的想要弄乱new。我很确定你没有。

答案 1 :(得分:1)

您想:residuetable->push_back("foo");

答案 2 :(得分:1)

您使用&代替*(*a).ba->b相同:

residuetable->push_back("foo");

但通常我们不会动态分配容器,因为有更好的方法来管理数据。