0

我是 C++ 新手,我想使用vector <unsigned int*> vec;

我试试这段代码:

vector <unsigned int*> vec;
unsigned int* tmpV= new unsigned int[4];
    for(unsigned int i=0; i<4;i++){
        tmpV[i]=i;
    }

vec.push_back(tmpV);
unsigned int* tmpV2=vec.at(0);
cout<<"A) tmpV2[1]: "<<tmpV2[1] <<endl;
cout<<"vec.size(): "<<vec.size()<<endl;

    for(unsigned int i=0; i<4;i++){
        tmpV[i]=i+4;

    }
vec.push_back(tmpV);
tmpV2=vec.at(0);
cout<<"vec.size(): "<<vec.size()<<endl;
cout<<"B) tmpV2[1]: "<<tmpV2[1]<<endl;

她的问题是我想为 A) 和 B) 输出相同的值,但它输出 A) tmpV2[1]: 1 B) tmpV2[1]: 5

我希望能够处理这个指针向量中的不同元素。我可以大致理解为什么会这样,但我找不到解决方案。

请记住,我不想使用:vector < vector <unsigned int> >

4

1 回答 1

0

这是因为您增加了向量中索引 a 处的指针所指向的值

向量

如果您在打印后重新打印

 valuecout<<"B) tmpV2[1]: "<<tmpV2[1]<<endl
valuecout<<"B) tmpV2[1]: "<<vec[1] <<endl

两者都会显示相同的结果

你到目前为止所做的是

你有一个整数指针向量

你已经初始化了这个数组

你有一个临时指针指向向量的第零个索引

现在使用这个指针,您打印了 vec 的第二个索引所指向的值

之后,您操作了指针向量指向的所有值(递增 4)

现在您再次打印向量的索引 1 所指向的值

两者都是相同的,唯一的事情是您打印了操纵它的值并在操纵后再次打印。如果您在最后重新打印 *vec[1] 和 tmpV2[1] ,您会发现两者是相同的。

于 2013-07-28T11:52:27.300 回答