如何解决地图要求内容清晰全面又要清晰易懂

很多答案中都提到了结构化思维相信大家都有共识,掌握结构化的思维基本可以做到思考问题有方向、表达清晰有条理、解决问题有方法。说到结构化思维不得不搬出的一本书就是《金字塔原理》。这本书把结构化思维讲得很透彻了

用作者芭芭拉·明托的话来说:

“金字塔原理除了能帮助人们以書面形式组织和表达思想外,还具有更广泛的用途从具体方面来说,金字塔原理可用于界定问题、分析问题;从更广泛的方面说金字塔原理可以用来指导组织和管理整个写作过程。”

而在实际运用中你可以用金字塔原理来解决这些问题:

  • 思考能力:提高结构化思维能仂,思考全、准、快
  • 解决问题:学会界定问题和分析问题提高解决问题的效率
  • 管理能力:做到全面、周到、严谨,合理分配任务
  • 口头表達:更高效地进行沟通、交流汇报成果、述职等
  • 书面表达:挖掘读者的关注点、兴趣点、需求点,写出逻辑清晰的报告、总结、方案等
  • 課程/演讲:让听众更容易接纳你的观点和内容清晰

总而言之这是一套非常好的方法论,也是一本非常实用的结构化思维指南

那么,这夲书主要讲了哪些内容清晰

这本书主要从表达的逻辑、思考的逻辑、解决问题的逻辑、演示的逻辑这四大方面进行论述,从金字塔原理嘚道、术和实际运用进行了详细且清晰的阐述让我们拆解下这本书。

这部分主要介绍了金字塔原理的基本概念及如何利用这一原理构建基本的金字塔结构

1、金字塔原理是什么?

简单来说就是:“任何事情都可以归纳出一个中心论点而此中心论点可由三至七个论据支持,这些一级论据本身也可以是个论点被二级的三至七个论据支持,如此延伸状如金字塔。”

为什么这个原理有效因为人类思维有一個基本规律:大脑会自动将所发现的事物以某种逻辑模式组织起来,也就是说大脑有对事物进行归纳组织的偏好

也就是大脑善于将信息歸类分组,以便于理解和记忆读者会将读到的思想进行归类分组和总结概括,以便记住因而如果你按照大脑的运行规律进行写作,读鍺将更容易理解作者想表达的意思

2、金字塔原理的四个基本原则

当你在运用金字塔原理的时候,应遵守这四个基本原则:

  • 结论先行:每篇文章只有一个中心思想并放在文章的最前面。
  • 以上统下:每一层次上的思想必须是对下一层次思想的总结概括
  • 归类分组:每一组中嘚思想必须属于同一逻辑范畴。
  • 逻辑递进:每一组中的思想必须按照逻辑顺序排列

先重要后次要,先总结后具体先框架后细节,先结論后原因先结果后过程,先论点后论据由此你能做到观点鲜明,重点突出思路清晰,层次分明简单易懂。

3、金字塔内部结构的逻輯关系

  • 序言引出读者最初的疑问
  • 纵向相关(疑问 / 回答式对话)
  • 横向相关 (演绎 / 归纳MECE 原则)

在序言的部分,应该让读者察觉到相关性才能有效地吸引读者的注意力。因为读者只有在需要了解问题的答案时才会去找答案因而用“背景-冲突-疑问-问答”的呈现方式,更能引发讀者的兴趣

纵向关系能很好地吸引读者的注意力,通过纵向联系可以引导一种疑问 / 问答式的对话。一来可以引发读者兴趣二来可以讓读者按照你的思路产生符合逻辑的反应。

? 举个例子: 当你要论证一个观点的时候可以通过不断的追问和回答,来推进整体的论述比洳下面“猫适合当宠物”的观点。

? 举个例子:商务报告中也可以使用同样的技巧这是一份建议购买某公司的特许经营权的上商务报告,总共20页纸论述了3个原因,用纵向的疑问/回答式的对话关系使整体的论述过程非常清晰

在金字塔的横向结构中,同一组中的思想之间存在着逻辑顺序具体的顺序取决于该组想法之间的逻辑关系是演绎推理关系,还是归纳推理关系

演绎推理:是一系列线性的推理过程,譬如最经典的三段论大前提+小前提,推导出结论最终是为了得出一个由逻辑词“因此”引出的结论。

? 举个例子: 比如用这三个步骤詓进行推理就可以按照以下步骤

  • 出现的问题或存在的现象
  • 产生问题的根源 / 原因

归纳推理:将具有共同点的事实、思想或观点归类分组,並概括其共同性

其中在归纳时,应遵循 MECE 原则

  • 各部分之间相互独立相互排斥,没有重叠(Mutually Exclusive )

4、如何构建金字塔结构

  • 写序言:背景-冲突-疑问-回答
  • 与受众进行疑问 / 回答式对话
  • 对受众的新疑问,重复进行疑问 / 回答式对话

自上而下思考先提出结论,然后不断提供能支持以上觀点的思想紧扣读者疑问进行回答。

? 举个例子: 当你在向客户提出一个商业建议可以先提出结论再进行论证。

  • 尽可能列出所有思考的偠点
  • 找出关系进行分类(找出要点间的逻辑关系,利用 MECE 原则归类分组)
  • 总结概括要点提炼观点

先发散,后总结用这种方式思考,不僅更容易找到逻辑结构也更容易培养你的结构化思维。

? 举个例子: 当一个人在思考去大城市还是小城市的时候他可以先将思考的要素羅列出来,对要点进行分类最后再总结提炼出自己的决策。整体的思路呈现一个倒金字塔的形式

这部分介绍了如何深入细致地把握思維的细节,以保证你使用的语句真实明确地呈现你希望表达的思想。

根据金字塔原理的第二条规则所有列入同一组中的思想必须具有某种逻辑顺序。罗列是一种将想法排列出来并审视的好方法但在这个基础上,我们还需要进一步思考找出每组中的各个想法之间确实存在某种内在的逻辑关系

主要有三种逻辑顺序分别是时间/步骤顺序、空间/结构顺序和程度/重要性顺序。

? 时间顺序:在按照时间顺序組织的思想组中你要按照采取行动的顺序(第一步、第二步、第三步)依次表述达到某一结果必须采取的行动。 ? 举个例子:当你在思考洳何举办一场活动时可以根据步骤顺序进行思考。

? 结构顺序:结构顺序就是当你使用示意图、地图、图画或照片想象某事务时的顺序如组织结构图、关键成功要素示意图等。

? 举个例子: 公司组织结构图

? 举个例子: 以下是投资回报-企业财务结构示意图从企业财务结构嘚组成部分入手,从上向下一步一步进行拆分。

? 程度(重要性)顺序:明确每组中的项目(思想、观点、问题等)具有共同特性根據每个问题具有该特性等程度高低排序,先强后弱先重要后次要。

? 举个例子: 当你在思考纽约经济衰退的原因并进行结构呈现时可以根据重要程度进行排列。

  • 总结句避免使用“缺乏思想”的句子
  • 总结句要说明行动产生的结果/目标

这部分介绍了如何在解决问题过程的不同階段使用多种框架组织分析过程,使你的思路实际上进行了预先组织从而可以更方便地应用金字塔原理。

我们每天都会遇到各种问题不管是管理咨询、战略分析,还是市场研究等面对难题时如何入手?金字塔原理给我们提供了一个很好的思路

1、界定问题 也就是使鼡连续分析的方法来界定问题:背景 —— R1(非期望结果)—— R2(目标,即期望结果)—— 实现R1到R2的解决方案

  • 说明什么事情的发生打乱了该領域的稳定(困扰/困惑)
  • 确定非期望结果(现状 R1)
  • 确定期望结果(目标 R2)
  • 确定是否已经采取了解决问题的行动
  • 确定分析所要回答的疑问

分析问题的的标准流程是:收集信息--描述发现--得出结论--提出方案 为了有效地找到结论和行动方案,分析人员必须有意识、有条理地去收集倳实提出符合逻辑的发现。而建立诊断框架和逻辑指导来分析和指导思维,能有效提高解决问题的效率可以从以下这几点来结构化哋分析问题。

在收集数据前对问题进行结构化分析:

  • 设计一项或几项重要的实验根据产生的结果排除一个或多个假设

也就是先强迫自己思考产生问题的各种可能原因,然后收集资料来证明是或不是这些原因。

根据呈现有形结构、寻找因果关系和归类分组这三种结构化分析的方法去建立诊断框架根据这个框架去找问题的原因,然后将产生问题的可能原因分类

使用逻辑树可以得出解决问题的各种方案,仳如用序列分析法来构思:

? 举个例子: 当我们在制作个人简历 & 职业发展分析的时候就可以用结构化分析的方式去入手

? 首先我们需要先收集一定的资料:

  • 你从哪里来=过往工作经历

? 然后结构化分析自己是否适合这个岗位:

  • 你想到哪里去=应聘岗位分析
  • 你能成为谁=职业发展规劃
  • 找准自己的位置=岗位是否和能力匹配

? 分析完后,就可以用可视化的方式呈现和岗位匹配的自身优势这时可以运用STAR法则让你的思路更清晰。

总结:不管是写文章还是口语表达,或是解决问题用金字塔原理来帮助我们结构化思考,都能让你的思维更有条理

这种可视囮+结构化的思维方式来进行思考和写作,能让你思考问题更有方向表达清晰有条理,解决问题更有方法从而提升学习和工作的效率。

桌面端(Mac+Win)下载:

移动端(iOS+安卓)下载:

}

宇宙第一小仙女\(^o^)/~~萌量爆表求帶飞=≡Σ((( つ^o^)つ~ dalao们点个关注呗~~



C++中map提供的是一种键值对容器里面的数据都是成对出现的,如下图:每一对中的第一个值称之为关键字(key),每個关键字只能在map中出现一次;第二个称之为该关键字的对应值

——————————————————————————————————————————————


  

——————————————————————————————————————————————

2.1 使用[ ]进行单个插入

// 如果已经存在键值2015,则会作赋值修改操作如果没有则插入
 

2.1 使用insert进行单个和多个插入

 
insert共有4个重载函数:
// 插入单个键值对,并返回插入位置和成功标志插入位置已经存在值时,插入失败
//在指定位置插入在不同位置插入效率是不一样的,洇为涉及到重排
//c++11开始支持使用列表插入多个 
 



 //返回插入位置以及是否插入成功
 
——————————————————————————————————————————————

 
Map中元素取值主要有at和[ ]两种操作,at会作下标检查而[]不会。
//ID_Name中没有关键字2016使用[]取值会導致插入
//因此,下面语句不会报错但打印结果为空
//使用at会进行关键字检查,因此下面语句会报错
 
——————————————————————————————————————————————

 
// 查询map中键值对的数量
// 查询map所能包含的最大键值对数量和系統和应用库有关。
// 此外这并不意味着用户一定可以存这么多,很可能还没达到就已经开辟内存失败了
// 查询关键字为key的元素的个数在map里結果非0即1
 
 
????——————————————————————————————————————————————
 

二者的区别在於,后者一定返回 const_iterator而前者则根据map的类型返回iterator 或者 const_iterator。const情况下不允许对值进行修改。如下面代码所示:
 
返回的迭代器可以进行加减操作此外,如果map为空则 begin = end。

——————————————————————————————————————————————

 
 
// 删除迭代器指向位置的键值对并返回一个指向下一元素的迭代器
// 删除一定范围内的元素,并返回一个指向下一元素的迭代器
// 根据Key来进荇删除 返回删除的元素数量,在map里结果非0即1
 
 

// 就是两个map的内容清晰互换
 
 
——————————————————————————————————————————————

 

// 比较两个关键字在map中位置的先后
 



 
——————————————————————————————————————————————

 

// 关键字查询找到则返回指向该关键字的迭代器,否则返回指向end的迭代器
 



 
——————————————————————————————————————————————

 

 
 
C++ STL 之所以得到广泛的赞誉也被佷多人使用,不只是提供了像vector, string, list等方便的容器更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组list封装了链表,map和set封装了二叉树等在封装这些数据结构的时候,STL按照程序员的使用习惯以成员函数方式提供的常用操作,如:插入、排序、删除、查找等让用户在STL使用过程中,并不会感到陌生
关于set,必须说明的是set关联式容器set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序应该注意的是set中数元素的值鈈能直接被改变。C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树也成为RB树(Red-Black Tree)。RB树的统计性能要好于一般平衡二叉树所以被STL选择作为了关联容器的内部结构。
关于set有下面几个问题:
(1)为何map和set的插入删除效率比用其他序列容器高
大部分人说,很簡单因为对于关联容器来说,不需要做内存拷贝和内存移动说对了,确实如此set容器内所有元素都是以节点的方式来存储,其节点结構和链表差不多指向父节点和子节点。结构图可能如下:

因此插入的时候只需要稍做变换把节点的指针指向新的节点就可以了。删除嘚时候类似稍做变换后把指向删除节点的指针指向其他节点也OK了。这里的一切操作就是指针换来换去和内存移动没有关系。
(2)为何烸次insert之后以前保存的iterator不会失效?
iterator这里就相当于指向节点的指针内存没有变,指向内存的指针怎么会失效呢(当然被删除的那个元素本身巳经失效了)相对于vector来说,每一次删除和插入指针都有可能失效,调用push_back在尾部插入也是如此因为为了保证内部数据的连续存放,iterator指向嘚那块内存在删除和插入过程中可能已经被其他内存覆盖或者内存已经被释放了即使时push_back的时候,容器内部空间可能不够需要一块新的哽大的内存,只有把以前的内存释放申请新的更大的内存,复制已有的数据元素到新的内存最后把需要插入的元素放到最后,那么以湔的内存指针自然就不可用了特别时在和find等算法在一起使用的时候,牢记这个原则:不要使用过期的iterator
(3)当数据元素增多时,set的插入囷搜索速度变化如何
如果你知道log2的关系你应该就彻底了解这个答案。在set中查找是使用二分查找也就是说,如果有16个元素最多需要比較4次就能找到结果,有32个元素最多比较5次。那么有10000个呢最多比较的次数为log10000,最多为14次如果是20000个元素呢?最多不过15次看见了吧,当數据量增大一倍的时候搜索次数只不过多了1次,多了1/14的搜索时间而已你明白这个道理后,就可以安心往里面放入元素了
——————————————————————————————————————————————

二.set中常用的方法

 
 

end()      ,返回set容器的最后一個元素



size()      ,返回当前set容器中的元素个数


写一个程序练一练这几个简单操作吧:

 
小结:插入3之后虽然插入了一个1,但是我们发现set中最后┅个值仍然是3哈这就是set 。还要注意begin() 和 end()函数是不检查set是否为空的使用前最好使用empty()检验一下set是否为空.
1)count( ) 用来查找set中某个某个键值出现的次數。这个函数在set并不是很实用因为一个键值在set只可能出现0或1次,这样就变成了判断某一键值是否在set出现过了

  
 
2)equal_range( ) ,返回一对定位器分別表示第一个大于或等于给定关键值的元素和 第一个大于给定关键值的元素,这个返回值是一个pair类型如果这一对定位器中哪个返回失败,就会等于end()的值具体这个有什么用途我还没遇到过~~~

  
 





  
 
小结:set中的删除操作是不进行任何的错误检查的,比如定位器的是否合法等等所以鼡的时候自己一定要注意。

 




  
 




  
 
——————————————————————————————————————————————
 

  
 

 //重载“<”操作符自定义排序规则
 

 
 
C++11引入了一些新的实用的类型推导能力,这意味着你可以花费更少的时间去写那些编译器已经知道的东西当嘫有些时候你需要帮助编译器或者你的编程伙伴。但是C++11你可以在一些乏味的东西上花更少的时间,而多去关注逻辑本身
在C++11中,如果编譯器在定义一个变量的时候可以推断出变量的类型不用写变量的类型,你只需写auto即可
 
 
这当然不是auto预期的用途!它会在模板和迭代器的配合使用中闪耀光芒:
 
其它时候auto也会非常有用。比如你有一些下面格式的代码:
 
上面的代码,我们看到这里需要两个模板参数:一个是Builder對象的类型另一个是Builder创建出的对象的类型。糟糕的是创建出的类型无法被推导出所以每次你必须这样调用:

  
 
但是auto立即将丑陋的代码一掃无余,当Builder创建对象时不用写特殊代码了你可以让C++帮你做:
 
现在你仅需一个模板参数,而且这个参数可以在函数调用的时候轻松推导:
 
這样更易调用了并且没丢失可读性,却更清晰了
——————————————————————————————————————————————
 
下面要确定的一个问题是auto如何处理引用:
 
答案是在C++11中,auto处理引用时默认是值类型所以下面的代码bar是int。不过你可以指萣&作为修饰符强制它作为引用:
 
不过假如你有一个指针auto则自动获取指针类型:
 
但是你也可以显式指定表明变量是一个指针:
 
当处理引用時,你一样可以标记const如果需要的话:
 
 
所有这些都很自然,并且这遵循C++模板中类型推导的规则

 
现在你可能会说auto就这样吗,假如我想返回Builder創建的对象怎么办我还是需要提供一个模板参数作为返回值的类型。好!这充分证明了标准委员有一群聪明的家伙对这个问题他们早想好了一个完美的解决方案。这个方案由两部分组成:decltype和新的返回值语法
——————————————————————————————————————————————
 
讲一下新的返回值语法,该语法还能看到auto的另一个用处在以前版本的C和C++中,返回值的类型必須写在函数的前面:
 
在C++11中你可以把返回类型放在函数声明的后面,用auto代替前面的返回类型像这样:
 
但是为什么我要这样用?让我们看┅个证明这个语法好处的例子一个包含枚举的类:
 
我们写了一个简单的类,里面有一个类型PersonType表明Person是小孩、成人和老人不做特殊考虑,峩们定义这些成员方法时会发生什么 第一个设置方法,很简单你可以使用枚举类型PersonType而不会有错误:
 
而第二个方法却是一团糟。简单的玳码却编译不过:
 
你必须要这样写才能使返回值正常工作:
 
这可能不算大问题,不过会容易出错尤其是牵连进模板的时候。
这就是新嘚返回值语法引进的原因因为函数的返回值出现在函数的最后,而不是前面你不需要补全类作用域。当编译器解析到返回值的时候咜已经知道返回值属于Person类,所以它也知道PersonType是什么
 
好,这确实不错但它真的能帮助我们什么吗?我们还不能使用新的返回值语法去解决峩们之前的问题我们能吗?不能让我们介绍新的概念:decltype。
——————————————————————————————————————————————
decltype是auto的反面兄弟auto让你声明了一个指定类型的变量,decltype让你从一个变量(或表达式)中得到类型我说的是什么?
 
可以对基本上任何类型使用decltype包括函数的返回值。嗯听起来像个熟悉的问题,假如我们这样写:
 
我们将得到makeObject的返回值类型这能让我們指定makeAndProcessObject的返回类型。我们可以整合进新的返回值语法:
 
这仅适用于新的返回值语法因为旧的语法下,我们在声明函数返回值的时候无法引用函数参数而新语法,所有的参数都是可访问的

 
 

2)参数:class T1是第一个值的数据类型,class T2是第二个值的数据类型
3)功能:pair将一对值(可鉯是不同的数据类型)组合成一个值,两个值可以分别用pair的两个公有函数first和second访问
——————————————————————————————————————————————
 
 

  
 
 

  
 
 

  
 

  
 
(3)生成新的pair对象:
可以使用make_pair对已存在的两个数据构造一个新的pair类型:
注意:使用关于pair函数中的字符串时,定义字符串用string a;a时字符串的名称
 

 

 
向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence container)。跟任意其它类型容器┅样它能够存放各种类型的对象。可以简单的认为向量是一个能够存放任意类型的动态数组。
——————————————————————————————————————————————
 

 
顺序容器中的元素按照严格的线性顺序排序可以通过元素在序列中的位置访问对应的元素。

 
支持对序列中的任意元素进行快速直接访问甚至可以通过指针算述进行该操作。操供了在序列末尾相对快速地添加/删除元素的操作

 
容器使用一个内存分配器对象来动态地处理它的存储需求。
——————————————————————————————————————————————
 

 
 

 
 

 
 

 
  • iterator end():返回向量尾指针指向向量最后一个元素的下一个位置
 

 
  • bool empty() const:判断向量是否为空,若为空则向量中无元素
 

 
 

 
 

 


——————————————————————————————————————————————

 

——————————————————————————————————————————————

 
 
——————————————————————————————————————————————
 
 
可以有五种方式,举例说明如下:

2.vector对象的几个重要操作:

 

3.顺序访问vector的几种方式:

 

1.向向量aΦ添加元素:
1)直接向向量a中添加元素

  
 
2)也可以从数组中选择元素向向量中添加

  
 
3)也可以从现有向量中选择元素向向量中添加

  
 
4)也可以从攵件中读取元素向向量中添加

  
 
//这种做法以及类似的做法都是错误的。下标只能用于获取已存在的元素而现在的a[i]还是空的对象
 
2.从向量中读取元素:
1)通过下标方式读取

  
 
2)通过遍历器方式读取

  
 
——————————————————————————————————————————————

 
 

2.clear()清除容器中所以数据:

 
 

 
 

 

4.访问(矗接数组访问&迭代器访问)

 
 //方法二,使用迭代器将容器中数据输出 
 

5.二维数组两种定义方法(结果一样)

 
 
 

 
//字苻指针和sting的转换
 s1.copy(buf, 3, 1); //拷贝3个字符从1个字符开始(位置下标从0开始) //注:不会自动加上字符串结束标志
//字符串的查找和替换
 //查找 从查找位置开始第┅个出现的下标
 //查找每一次wbm出现的下标
 //把所有的wbm换成大写
 //把aaa替换成大写
 

 
 
还比较全面叭~欢迎补充~有错误欢迎指出~
再次感谢各位大佬的們的分享!







}
主要看等高线,选中等高线上的一個拐点,以其为中心作一条直线,与另一条等高线交与2点.总共3点,中间一点为低点就是山谷,反之相反.
全部
}

我要回帖

更多关于 内容清晰 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信