大家都體會過sequential container搭配copy() algorithm,只要一行程式就可以將所有值輸出到cout,map這種associative container就無法用這一招,是否有其它方式解決呢?

map這種associative container因為是雙值,若用copy()到cout,會讓cout傻眼,不知道要抓拿一個值,當然用for loop一定可以,但基於使用STL的最高境界:不用for/while loop,此範例我們使用了for_each() algorithm。

 1/**//* 
 2(C) OOMusou 2006 http://oomusou.cnblogs.com
 3
 4Filename    : MapWithfor_each.cpp
 5Compiler    : Visual C++ 8.0 / ISO C++
 6Description : Demo how to use for_each() algorithm to print map.
 7Release     : 12/14/2006 1.0
 8*/
 9#include <iostream>
10#include <map>
11#include <algorithm>
12#include <string>
13
14using namespace std;
15
16void print(pair<int,string>);
17
18int main() {
19  map<int, string> authors;
20  authors[1] = "Stanley B. Lippman";
21  authors[2] = "Scott Meyers";
22  authors[3] = "Andrei Alexandrescu";
23
24  for_each(authors.begin(), authors.end(), print);
25
26  return 0;
27}
28
29void print(pair<int, string> p) {
30  cout << p.second << endl;
31}

執行結果

1Stanley B. Lippman
2Scott Meyers
3Andrei Alexandrescu
4請按任意鍵繼續 . . .

使用for_each()的感動雖然不如copy()那樣震撼,但最少程式乾淨了許多。

See Also
(原創) 如何為程式碼加上行號? (C/C++) (STL)

(原創) 將map輸出到cout,是否有更方便的方法? (C/C++) (STL)相关推荐

  1. (原創) 如何利用copy() algorithm將array輸出到cout? (C/C++) (STL)

    原本以為STL algorithm只能配合STL的Container,但看到侯捷的泛型程式設計與STL的範例,為了精簡,常常跟array搭配,才驚覺原來algorithm也可以搭配array喔!!此範 ...

  2. (原創) 如何將DE2_70_TV範例加上Sobel Edge Detector? (SOC) (Verilog) (Image Processing) (DE2-70)...

    Abstract 本文將DE2-70平台的DE2_70_TV的範例加上Sobel Edge Detector. Introduction 使用環境:Quartus II 8.0 + DE2-70 (C ...

  3. java孙膑和庞涓问题_魏王出一难题,庞涓多个方法解决不了,孙膑一定乾坤

    原标题:魏王出一难题,庞涓多个方法解决不了,孙膑一定乾坤 庞涓和孙膑是师兄弟,但庞涓是师兄,他行下山,然后在魏王的帐下打出了许多功劳,于是被封为魏国的大将军.在山上学艺的时候,庞涓和孙膑的关系非常好, ...

  4. (原創) Quartus II安裝新觀念:如何將Quartus II安裝在VirtualBox內? (SOC) (Quartus II) (VirtualBox)...

    Abstract VM並不是什麼新的觀念,透過VM我們可以在一個OS去執行其他OS,若我們將Quartus II也裝在VM中,將可解決一些長久以來Quartus II使用上所遇到的問題. Introd ...

  5. (原創) 如何將編譯結果,統一放在一個目錄下? (SOC) (Quartus II)

    Abstract Quartus II預設會將所有檔案都放在project的根目錄下,導致根目錄檔案過多,管理不便,若能將編譯的結果統一放到其他目錄下,將有助於日後管理. Introduction 使 ...

  6. (原創) 如何將CMOS所擷取的影像傳到PC端? (SOC) (DE2) (TRDB-DC2)

    AbstractDE2提供了Control Panel與Image Converter,可以將CMOS所擷取的影像傳到PC端, Introduction 版權聲明:文中所有範例皆出自DE2光碟,版權歸 ...

  7. ABAP將數字輸出前面補0

    將數字輸出前面補0 Function: CONVERSION_EXIT_ALPHA_INPUT 程式碼 DATA: test(5),       value LIKE regup-wrbtr VALU ...

  8. (原創) 如何正確的使用迴圈(使用for_each)? (C/C++) (STL) (template)

    Abstract之前在(原創) 如何使用for_each() algorithm? (C/C++) (STL) 曾經討論過for_each(),不過當時功力尚淺,只談到了皮毛而已,這次看了effect ...

  9. (原創) 由一維陣列模擬二維陣列(多維陣列) (C/C++)

    C/C++的陣列是有名的難用!!沒有『真正』支援多維陣列,陣列傳到參數時還必須寫死(C++若用template可不用寫死),若是動態的多維陣列就更難寫了,C/C++還必須到一定的功力才寫的出來!!既然 ...

最新文章

  1. zabbix监控快速搭建--云平台技术栈10
  2. 修改普通用户加入域的次数
  3. 图形界面终端下打印内核调试信息
  4. Delphi 2009 新增单元 Character[2]: IsLetter、IsUpper、IsLower、IsDigit、IsNumber
  5. ES6-9 对象密封4种方式、assign、取值函数的拷贝
  6. Abbreviated biography of Jon Claerbout
  7. 华为鸿蒙内测报名要报吗,华为鸿蒙HarmonyOS 2.0公测版/内测版申请和招募指南,快来报名尝鲜吧!...
  8. jetty-maven-plugin
  9. python答辩毕设ppt_毕设答辩ppt总结
  10. 获取浏览器唯一标识_探讨浏览器指纹 fingerprint
  11. 如何使用 QEMU 中的虚拟串口
  12. 脂肪肝青睐“三围”人士 不吃早餐容易诱发
  13. 365天口才训练计划
  14. Auto CAD:CAD绘图设计以项目为导向,实战案例布局作图运用技巧经验总结之详细攻略
  15. H Hash Function
  16. Winform中给下拉框(ComboBox或LookUpEdit)添加内容
  17. 商场管理系统毕业设计
  18. Android手机连接到Tomcat服务器
  19. oracle中修改用户密码
  20. 树莓派Ubuntu 16.04 MATA系统 修改用户文件夹名后,提示configure it with blueman-service...

热门文章

  1. Google Breakpad 完全解析(二) —— Windows前台实现篇
  2. 基于SSM实现考研信息管理平台系统
  3. 深入浅出详细介绍Java异常,让你茅塞顿开般的感觉
  4. fasta.img 是什么文件?
  5. 使用【飞桨】实现【手写数字识别】
  6. matlab学习第一天
  7. 十天快速入门Python
  8. C# DateTimePicker控件如何精确设置显示时分秒
  9. javascript-tab切换效果
  10. Qomolangma实现篇(七):Qomo的接口机制