Sashkinzz Asked:2023-12-22 03:18:46 +0000 UTC2023-12-22 03:18:46 +0000 UTC 2023-12-22 03:18:46 +0000 UTC 迭代器初始化 772 vector<int> m={1,2,3}; m.begin()++; cout<<m[0];} 问题是,为什么迭代器的值没有变成第0个元素呢? c++ 2 个回答 Voted Harry 2023-12-22T03:34:17Z2023-12-22T03:34:17Z 我们看一下代码 int a = 5; int * p = &a; Ds感觉之间的区别 (*p)++; 和 p++; ?在第一种情况下,它是指针指向的内容的增量;在第二种情况下,它只是指针的增量。 迭代器的情况大致相同:迭代器本质上是指针的类似物。 Best Answer αλεχολυτ 2023-12-22T03:55:34Z2023-12-22T03:55:34Z 它的作用是返回一个迭代器(即特定向量类型m.begin()的类型实例)。iterator该迭代器表示一个新的未命名对象,其值指向向量的开头m。 接下来,++它后递增这个无名对象。此后;,该对象将不再存在。 m.begin()++; ^--- безымянный объект, для которого был выполнен инкремент, умирает 进一步的输出是对向量的m[0]调用,该向量被重载以提供按索引对元素的访问。operator[]在本例中,(通过索引0) is located 1,它初始化了第一行中数组的初始元素。此输出与之前执行的无名迭代器对象的增量无关,该对象是在上面的行中获得的。 如果想通过迭代器输出一个值,同时,输出数组的下一个元素,可以这样写: auto it = m.begin() + 1; cout << *it; // выведет 2 或者单行: cout << *++m.begin();
我们看一下代码
Ds感觉之间的区别
和
?在第一种情况下,它是指针指向的内容的增量;在第二种情况下,它只是指针的增量。
迭代器的情况大致相同:迭代器本质上是指针的类似物。
它的作用是返回一个迭代器(即特定向量类型
m.begin()的类型实例)。iterator该迭代器表示一个新的未命名对象,其值指向向量的开头m。接下来,
++它后递增这个无名对象。此后;,该对象将不再存在。进一步的输出是对向量的
m[0]调用,该向量被重载以提供按索引对元素的访问。operator[]在本例中,(通过索引0) is located1,它初始化了第一行中数组的初始元素。此输出与之前执行的无名迭代器对象的增量无关,该对象是在上面的行中获得的。如果想通过迭代器输出一个值,同时,输出数组的下一个元素,可以这样写:
或者单行: