c++ - 为什么c ++地址中的向量不能通过原始指针访问
问题描述
当我每次写作时都使用矢量时
vector<int>::iterator itr;
但是当我想用原始指针访问地址时
int *ptr=v.begin();
如果我想用迭代器和原始指针变量打印地址,它不会打印任何内容并显示错误它不会打印任何地址但是如果我们想像这样使用 v[i] 访问它,它工作正常我的问题是为什么这个原始指针不包含此容器初学者地址
解决方案
据我了解,您想要一个指向向量中第一个元素的指针:
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
推荐阅读
- symfony - 如何修复 symfony 4 http 错误 500 并运行网站?
- c# - 添加轻量级渲染管道时对象图形混乱
- c - 如何比较字符串中的各个元素?
- android - 您的 CPU 不支持所需的功能(VT-x 或 SVM)
- mongodb - 如何有效地检查 Scala 的 MongoDB 集合是否为空?
- reactjs - 让 Storybook react-docgen-typescript-loader 使用 typescript 道具
- packer - Azure Devops Packer 构建代理(为 Packer 创建的临时资源组定义 Vnet IP 范围以获取快照))
- cordova - “cordova run android”突然停止工作,以错误消息结束
- validation - 如何将电子邮件建议传递到 Azure AD B2C 注册页面
- android - 如何识别导致类或成员保留在android中的proguard规则?