c++map容器创建、插入与遍历

本文详细介绍了C++中map容器的无参和带参构造,以及如何插入元素、通过迭代器和重构符号查询值和遍历map。特别指出map并非数组,【】符号是重构的访问方式。

构造,无参和带参。

带参只演示这一种,这种最好用。

map<string, string> m;

map<int, int> m({ {1,11},{2,22} });

插入

同样演示两种

m.insert(pair < string, string>("aa", "a"));

m.insert({ {"bb","b"} });

查询map中的value

方法1.使用迭代器

map<string, string>::iterator pos = m.find("aa");
cout << (*pos).second << endl;

方法2.使用重构的【】

cout << m["aa"] << endl;

注意:map并不是数组,【】只是重构过的符号

遍历查询

	map<int, int> m({ {1,11},{2,22} });
	
	for (auto& val : m) {
		cout << val.first<< val.second << endl;
	}

### 如何遍历 C++ 中的 `std::map` 容器C++ 中,`std::map` 是一种关联式容器,它存储键值对并保持按键排序。为了遍历 `std::map`,可以使用不同的方法。 #### 使用范围基迭代器 (Range-based For Loop) 现代 C++ 提供了一种简洁的方式来遍历整个映射表: ```cpp #include <iostream> #include <map> int main() { std::map<int, std::string> myMap; // 插入一些数据到 map 中 myMap.insert({1, "one"}); myMap.insert({2, "two"}); myMap.insert({3, "three"}); // 范围for循环遍历 map for (const auto& pair : myMap) { std::cout << pair.first << ": " << pair.second << '\n'; } return 0; } ``` 这种方法不仅简化了语法,还提高了代码可读性[^1]。 #### 利用 begin 和 end 方法的传统方式 对于更传统的场景或者当需要更多控制时,可以通过显式的调用 `begin()` 和 `end()` 来创建迭代器对象来进行遍历操作: ```cpp #include <iostream> #include <map> int main(){ std::map<int,std::string> myMap; // 添加元素... myMap[1]="apple"; myMap[2]="banana"; // 创建一个指向第一个元素的迭代器 for(auto it=myMap.begin();it!=myMap.end();++it){ std::cout<<(*it).first<<" => "<<(*it).second<<"\n"; } return 0; } ``` 这里展示了通过增加前缀运算符 (`++`) 移动至下一个位置的方式访问每一个条目直到结束条件满足为止[^2]. #### 运用 while 循环配合 make_pair 函数 另一种可能不太常见但是有效的做法是利用 `while` 结合 `make_pair` 构造函数实现相同目的: ```cpp #include <iostream> #include <map> using namespace std; int main () { map<char,int> m{{'a',1}, {'b',2}}; map<char,int>::iterator i=m.find('c'); while(i != m.end()){ cout << (*i).first << "\t" << (*i).second << endl; ++i; } return 0; } ``` 此片段中的 `find` 成员函数用于定位特定 key 所对应的 value 并以此作为起点开始打印直至到达终点[^3].
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值