首页 > 解决方案 > 为什么c ++地址中的向量不能通过原始指针访问

问题描述

当我每次写作时都使用矢量时

    vector<int>::iterator itr;

但是当我想用原始指针访问地址时

 int *ptr=v.begin();

如果我想用迭代器和原始指针变量打印地址,它不会打印任何内容并显示错误它不会打印任何地址但是如果我们想像这样使用 v[i] 访问它,它工作正常我的问题是为什么这个原始指针不包含此容器初学者地址

标签: c++stl

解决方案


据我了解,您想要一个指向向量中第一个元素的指针:

vector<int>::iterator itr = v.begin();
// if(itr != v.end()) // should be involved
int* ptr = &*itr;

或者:

// if(v.size()) // should be involved
int* ptr = &v[0]; // all C++ versions
int* ptr = v.data(); // C++11 and later

推荐阅读