迭代器>秒是什么意思?
What does iterator->second mean?
在c++中,std::map<>::iterator
的类型是什么?
我们知道类型为std::map<A,B>::iterator
的对象it
有一个重载的operator ->
,它返回一个std::pair<A,B>*
,并且std::pair<>
有一个first
和second
成员。
it->second
呢?我相信你知道std::vector<X>
存储了一大堆X
对象,对吧?但是如果你有一个std::map<X, Y>
,它实际上存储的是一堆std::pair<const X, Y>
。这正是映射的作用——它将键和相关的值配对在一起。
当你迭代一个std::map
时,你是在迭代所有这些std::pair
。当对其中一个迭代器解引用时,将得到一个包含键及其关联值的std::pair
。
std::map<std::string, int> m = /* fill it */;
auto it = m.begin();
在这里,如果您现在执行*it
,您将获得映射中第一个元素的std::pair
。
现在,类型std::pair
允许您通过两个成员:first
和second
访问它的元素。因此,如果std::pair<X, Y>
名为p
,则p.first
是X
对象,p.second
是Y
对象。
现在你知道对一个std::map
迭代器解引用得到一个std::pair
,然后你可以用first
和second
访问它的元素。例如,(*it).first
将为您提供键,(*it).second
将为您提供值。这些等价于it->first
和it->second
键为K
,值为V
的std::map
的元素类型(也是通过对该映射的迭代器解引用获得的表达式类型)为std::pair<const K, V>
,键为const
,以防止干扰映射值的内部排序。
std::pair<>
有两个成员名为first
和second
(见这里),具有相当直观的含义。因此,给定映射对象的迭代器i
,表达式:
i->first
相当于:
(*i).first
指向由迭代器指向的pair
对象的第一个 (const
)元素,即它指向映射中的键。相反,表达式:
i->second
相当于:
(*i).second
指pair
的第二个元素,即映射中对应的值。
用于映射和无序映射。
map存储键值对,其中i->第一个是键,i->第二个是反映值。
#include<bits/stdc++.h>
#define long long int
using namespace std;
int32_t main(){
map<int,int> m;
m.insert({1,2});
m.insert({2,4});
for(auto i:m){
cout<<"key - "<<i.first<<" "<<" Value - "<<i.second<<endl;
}
}
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 在命名空间名称之前加上 :: 是什么意思?
- 从字符数组的元素中减去'a'是什么意思
- "friend"关键字在C++中是什么意思?
- 减法中的"0"是什么意思?
- 字符数组前面的加号是什么意思?
- 这里的字符串函数是什么意思