【发布时间】:2015-09-21 13:37:01
【问题描述】:
我刚刚开始学习向量和迭代器。我无法理解 2 件事。为什么可以更改常量迭代器,“*”的作用是什么?
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
vector<string> inventory;
inventory.push_back("inventory1");
inventory.push_back("inventory2");
inventory.push_back("inventory3");
vector<string>::iterator myIterator;
vector<string>::const_iterator iter;
cout << "Your items:\n";
for (iter = inventory.begin(); iter != inventory.end(); iter++)
{
cout << *iter << endl;
}
【问题讨论】:
-
任何迭代器都可以改变值,除非它被声明为
const。const_iterator将“指向”的对象称为const。*是检索迭代器“指向”的值。 -
const_iterator并不意味着迭代器是一个常量,而是你不能改变它所引用的项目。 -
该代码是正确的。我只是无法忍受为什么“iter”,即 const_iterator,可以改变他的价值,我无法理解你对“*”的意思
-
我想我应该阅读更多内容以了解您想说什么。
-
@owacoder - 不要把这个可怜的家伙和指针搞混了。他们很难!严格来说,指针是一种随机访问迭代器。不是反过来。 :-)