我想在函数内创建一个字符串向量,并在堆上为它分配内存。为此,我正在使用
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> >*
如何解决此问题并在堆上分配的向量末尾添加函数调用的结果?
答案 0 :(得分:4)
使用->
通过指针访问类成员:
residuetable->push_back(...);
然后再想一想你是否真的想要弄乱new
。我很确定你没有。
答案 1 :(得分:1)
您想:residuetable->push_back("foo");
答案 2 :(得分:1)
您使用&
代替*
,(*a).b
与a->b
相同:
residuetable->push_back("foo");
但通常我们不会动态分配容器,因为有更好的方法来管理数据。