C++ C++;术语引用和迭代器
维基百科告诉我 Reference是一种简单的引用数据类型,其功能不如从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
我正在学习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