1

有人能帮忙吗...

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' 的左边必须有类/结构/联合

我正在使用 new 运算符创建一个向量,以便它比创建它的函数的寿命更长。因此,这给了我一个指向堆上那个向量的指针,而不是一个实际的向量对象本身。因此它不会让我执行任何 push_backs 的 .reserve()。我看不到解决方法,有人可以帮忙吗?

4

4 回答 4

9

vVec 是一个指向向量的指针。因此,您应该使用间接 (->) 运算符而不是点 (.)

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]);
}
于 2009-06-23T12:05:34.960 回答
1

使用“->”而不是“。” vVec是指针类型的,所以你需要使用operator ->它来访问它所指向的对象的成员。

于 2009-06-23T12:05:14.697 回答
0

中间体

vVec.reserve(frankReservedSpace);

你要:

vVec->reserve(frankReservedSpace);
于 2009-06-23T12:05:35.927 回答
0

就个人而言,我不关心您在变量名中构建的匈牙利符号。我宁愿看到比“vVec”更具体的领域和自我记录的东西。如果您决定更改为链表,是否必须更改变量名称以反映这一点?显然答案是否定的。

于 2009-06-23T12:11:14.747 回答