gpt4 book ai didi

c++ - 为什么不能 p = itv?(来自 C++ 的 vector 问题)

转载 作者:行者123 更新时间:2023-12-05 01:08:58 25 4
gpt4 key购买 nike

这是我的代码:

vector<int>::iterator itv = vec.begin();
int *p;
p = itv; // ERROR!

我有一个简单的问题:为什么p不能得到itv的值,因为p是地址,itv也是地址。

谢谢。 :D

最佳答案

一般来说,迭代器不定义为原始指针。

在某些编译器的旧版本中,类模板 std::vector 的迭代器确实被定义为只是一个指针。

但在现代编译器中,标准容器的迭代器通常被定义为某些类的对象。

您可以通过以下方式重写您的代码片段

vector<int>::iterator itv = vec.begin();
int *p;
p = &( *itv );

但更简单更安全的方法是写

int *p = vec.data();

这是一个演示程序。

#include <iostream>
#include <vector>

int main()
{
std::vector<int> vec = { 1, 2, 3, 4, 5 };

for ( int *p = vec.data(); p != vec.data() + vec.size(); ++p )
{
std::cout << *p << ' ';
}
std::cout << '\n';

return 0;
}

程序输出是

1 2 3 4 5

关于c++ - 为什么不能 p = itv?(来自 C++ 的 vector 问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65564890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com