gpt4 book ai didi

c++ - 迭代器实际上指向容器中的什么?

转载 作者:行者123 更新时间:2023-11-28 04:34:56 25 4
gpt4 key购买 nike

set <vector<int> > myset;
vector<int> v1= { 34,634,758,46,64 };
vector<int >v2= {325, 7457, 586, 865};
myset.insert(v1);
myset.insert(v2);
set<vector<int> > ::iterator it;
it = myset.begin();
for (; it != myset.end(); it++)
{
vector<int> ::const_iterator temp = (*it);

}

我知道(它)指向一个 vector ,所以如果我写 vector::const_iterator temp=(*it) , temp 应该指向 vector 的第一个元素?为什么这没有发生?迭代器实际上指向容器中的什么?在这种情况下我将如何遍历容器?

最佳答案

I know that (it) is pointing to a vector

没有。它指的是 set 中的一个元素,而不是该元素中包含的内容(vector)。

so if i write vector ::const_iterator temp=(*it) , temp should point to first element of the vector?

没有。当您取消引用 it 时,您正在访问包含在 set 元素中的 vector 本身。您没有访问 vector 的任何元素。为此,您需要使用 vector 自己的方法,例如:

set< vector<int> > myset;
...
set< vector<int> >::iterator it;
for(it = myset.begin(); it != myset.end(); ++it)
{
vector<int>::const_iterator temp = (*it).begin(); // or: it->begin()
/* which is the same as doing this:
vector<int> &v = *it;
vector<int>::const_iterator temp = v.begin();
*/
}

why is this not happening ?

因为没有从 vector&vector::const_iterator 的隐式转换。

what does a iterator actually point to in a container ?

这是实现定义的。但总的来说,迭代器是指向容器元素的概念索引/指针。您必须取消引用迭代器才能访问该元素的内容。

how will i traverse the container in such a situation ?

关于c++ - 迭代器实际上指向容器中的什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51750615/

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