任何人都可以帮忙...
vector<unsigned int> *vVec = new vector<unsigned int>;
vVec .reserve(frankReservedSpace);
start = std::clock();
for(int f=0; f<sizeOfvec; f++)
{ //Populate the newly created vector on the heap
vVec .push_back(pArray[f]);
}
我得到了: 错误C2228:'.reserve'的左边必须有class / struct / union
我正在使用new运算符创建一个向量,以便它比创建它的函数更长。因此,这给了我一个指向堆上的向量而不是实际向量对象本身的指针。因此它不会让我执行push_backs的任何.reserve()。 我无法看到解决方法,有人可以帮忙吗?
答案 0 :(得分:9)
vVec是一个指向矢量的指针。因此,您应该使用间接( - &gt;)运算符而不是点(。)
vector<unsigned int> *vVec = new vector<unsigned int>;
vVec->reserve(frankReservedSpace);
start = std::clock();
for(int f=0; f<sizeOfvec; f++)
{ //Populate the newly created vector on the heap
vVec->push_back(pArray[f]);
}
答案 1 :(得分:1)
使用“ - &gt;”代替 ”。” vVec
是指针类型,因此您需要使用operator ->
来访问它指向的对象的成员。
答案 2 :(得分:0)
而不是
vVec.reserve(frankReservedSpace);
你想要:
vVec->reserve(frankReservedSpace);
答案 3 :(得分:0)
就个人而言,我并不关心你在变量名中构建的匈牙利符号。我宁愿看到比'vVec'更具域名性和自我记录的东西。如果您决定更改为链接列表,变量名称是否必须更改才能反映出来?显然答案是否定的。