Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;术语引用和迭代器_C++ - Fatal编程技术网

C++ C++;术语引用和迭代器

C++ C++;术语引用和迭代器,c++,C++,维基百科告诉我 Reference是一种简单的引用数据类型,其功能不如从C继承的指针类型,但更安全 我正在学习C++,我遇到了函数向量:: 在文档中,它表示功能 返回对向量中第一个元素的引用 但是,如下面的代码所示,返回值被视为元素本身而不是引用 vector<int> my_vector(1); // initialising a vector my_vector.push_back(10); // inserting 10 int number = my_vector.front

维基百科告诉我

Reference是一种简单的引用数据类型,其功能不如从C继承的指针类型,但更安全

我正在学习C++,我遇到了函数向量:: 在文档中,它表示功能

返回对向量中第一个元素的引用

但是,如下面的代码所示,返回值被视为元素本身而不是引用

vector<int> my_vector(1); // initialising a vector
my_vector.push_back(10); // inserting 10
int number = my_vector.front() + 1; // number = 11
vector my_vector(1);//初始化向量
我的向量。向后推(10);//插入10
int number=my_vector.front()+1;//数字=11
如果my_vector.front()是对第一个元素的引用,是否应该用(*)解除对它的引用以访问该值

看到了吗

*my_vector.begin()==my_vector.front()==10

我可以对迭代器做算术运算,我应该把迭代器看作类似于C中指针的东西,把引用看作一个值吗

。。。我应该认为迭代器类似于C中的指针,而引用是一个值吗

是的,迭代器实现类似指针的行为

将引用视为存储的特定值的别名。

my_vector.front()
返回对第一个元素的引用,而不是迭代器/指针。为了使用引用的值,不需要取消引用

我可以对迭代器做算术运算,我应该想到迭代器吗 类似于C中的指针,并将引用视为 价值

没错。
迭代器基本上是用于容器访问的美化指针,而引用或多或少是
*指针
(取消引用的指针)。

当对象通过引用传递或返回时,使用此引用就像使用原始对象本身(包括修改它!)。例如:

...
my_vector.front() = number *2; 
cout << number<<" "<<  my_vector.front() <<endl;   

此外,这也回答了您关于迭代器与指针的问题:
my_vector.begin()+10    // ok for a random access iterator on vectors, not for 
                        // bidirectional iterators on iterators on a list