使用std::vector容器中犯的一个错误

类似std::vector< int*>* vpInt; 这种声明需要注意的地方

当使用下列方式声明一个包含了指针元素(其实不一定是指针元素)的容器指针时

std::vector<int*>* vpInt=new std::vector<int*>
int num=8,tmp=7;
vpInt->push_back(&int);
vpInt[0]=&tmp;//试图用[]访问并修改第0个容器内的元素将会报错

其实很好理解,因为此时vpInt[0]操作将会访问到一个std::vector< int*>* 的实体,而不是实体其中的元素,因此正确做法是先解指针再访问

(*vpInt)[0]=&tmp;//正确

猜你喜欢

转载自blog.csdn.net/sssaaaannnddd/article/details/80434725
今日推荐