c++ - 我们如何理解set <pair <int,int >>的迭代器?

标签 c++ c++11 iterator

因此,我声明了一个将容纳一对整数的集合。
什么是temp?这是否意味着temp将指向pair<int,int>

set<pair<int, int>> myset;
pair<int, int> temp = *(myset.begin());
下面的代码与上面的代码有什么不同?我可以定义一下这些代码在做什么。
pair<int, int>::iterator temp;
temp = *(myset.begin());

最佳答案

在此代码中:

set<pair<int, int>> myset;
pair<int, int> temp = *(myset.begin());
变量temppair,包含两个intmyset.begin()返回一个迭代器,指向set名为pairmyset中的第一个元素。它被*取消引用,值(pair)被复制到temp中。
在此代码中:
pair<int, int>::iterator temp;
temp = *(myset.begin());
首先将变量temp声明为pair<int, int>的迭代器,然后代码尝试将pair<int, int>的值复制到其中。这将无法编译。

关于c++ - 我们如何理解set <pair <int,int >>的迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64739491/

相关文章:

c++ - 为 std::any_of 等提供反向迭代器是否有意义?

c++ - 类型特征优化

c++ - 指向 unique_ptr 的裸指针

java - 迭代器接口(interface)

c++ - 使用 `__builtin_expect` 会影响程序语义吗?

c++ - Visual Studio 中的 Cygwin

c++ - 实现循环队列时出错?

java - 迭代器删除与 ArrayList 删除之间的区别?

java - 通过迭代器从ArrayList中删除一个对象

c++ - 为什么通过指针变量 (*variablePointer++) 对变量的值进行增量后返回垃圾值?