【C++ 与 STL】映射:map

map提供了“[]”运算符,使得map可以像数组一样使用
所以map也称为关联数组
map就是从键(key)到值(value)的映射。
例如可以用一个map<string, int> month_name 来表示月份名字到月份编号的映射
然后用month_name[“July”] = 7 这样的方式来赋值

map的基本操作函数
begin() 返回指向map头部的迭代器
clear() 删除所有元素
count(elem) 返回指定元素出现的次数
empty() 如果map为空则返回true
end() 返回指向map末尾的迭代器
equal_range() 返回特殊条目的迭代器对
erase() 删除一个元素
find() 查找一个元素
get_allocator() 返回map的配置器
insert() 插入元素
key_comp() 返回比较元素key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size() 返回可以容纳的最大元素个数
rbegin() 返回一个指向map尾部的逆向迭代器
rend() 返回一个指向map头部的逆向迭代器
size() 返回map中元素的个数
swap() 交换两个map
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数


例题:反片语
输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本中的另外一个单词。
在判断是否满足条件时,字母不分大小写,但在输入时应保留输入中的大小写,按字典序进行排列(所有大写字母在小写字母的前面)
样例输入:
ladder came tape soon leader acme RIDE lone Dreis peat
ScAlE orb eye Rides dealer NotE derail LaCeS drIed
noel dire Disk mace Rob dries
样例输出:
Disk
NotE
derail
drIed
eye
ladder
soon

 

【C++ 与 STL】集合:set

方法:
begin() 返回指向第一个元素的迭代器
clear() 清除所有元素
count() 返回某个值元素的个数

empty() 如果集合为空,返回true(真)
end() 返回指向最后一个元素之后的迭代器,不是最后一个元素

equal_range() 返回集合中与给定值相等的上下限的两个迭代器
erase() 删除集合中的元素
find() 返回一个指向被查找到元素的迭代器

get_allocator() 返回集合的分配器
insert() 在集合中插入元素
lower_bound() 返回指向大于(或等于)某值的第一个元素的迭代器

key_comp() 返回一个用于元素间值比较的函数
max_size() 返回集合能容纳的元素的最大限值
rbegin() 返回指向集合中最后一个元素的反向迭代器
rend() 返回指向集合中第一个元素的反向迭代器

size() 集合中元素的数目
swap() 交换两个集合变量
upper_bound() 返回大于某个值元素的迭代器
value_comp() 返回一个用于比较元素间的值的函数

【C++ 与 STL】不定长数组:vector

vector是一个模板类 所以使用时要用vector<int> a 或者 vector<double> b这样的方式来声明一个vector
vector<int>是一个类似于int a[]的整数数组,而vector<string>是一个类似于string a[]的字符串数组
clear()清空
resize()改变大小
push_back()在尾部添加元素
erase()删除元素
pop_back()在尾部删除元素
empty()测试是否为空
vector之间可以直接赋值或者作为函数的返回值
push_back()pop_back()无需改变数组长度,自动会增加和减小数组长度
增加长度后增加的元素值为0
测试代码:

继续阅读【C++ 与 STL】不定长数组:vector

摘自Google开源项目风格指南-C++风格指南

1.#define保护
使用#define防止头文件被多重包含

#ifndef <PROJECT>_<PATH>_<FILE>_H_
#define <PROJECT>_<PATH>_<FILE>_H_

#endif // <PROJECT>_<PATH>_<FILE>_H_

举个栗子~:

#ifndef STDIO_H_
#define STDIO_H_

#include <stdio.h>

#endif //stdio.h

2.函数参数的顺序
定义函数时, 参数顺序依次为: 输入参数, 然后是输出参数。

3.在 #include 中插入空行

以分割相关头文件, C 库, C++ 库, 其他库的 .h 和本项目内的 .h 是个好习惯。

举个栗子~:

#include “foo/public/fooserver.h” // 优先位置

#include <sys/types.h>
#include <unistd.h>
#include <hash_map>
#include <vector>

#include “base/basictypes.h”
#include “base/commandlineflags.h”
#include “foo/public/bar.h”

4.通用命名规则
(1)函数命名,变量命名,文件命名要有描述性;少用缩写。
尽可能给有描述性的命名,别心疼空间,毕竟让代码易于新读者理解很重要。
不要用只有项目开发者能理解的缩写,也不要通过砍掉几个字母来缩写单词。

举个栗子~:

int price_count_reader; // 无缩写
int num_errors; // “num” 本来就很常见
int num_dns_connections; // 人人都知道 “DNS” 是啥

(2)类型名称的每个单词首字母均大写, 不包含下划线: MyExcitingClass, MyExcitingEnum.

举个栗子~: 继续阅读摘自Google开源项目风格指南-C++风格指南

如何将Sublime Text中的代码以彩色高亮形式复制到博客或word文档里

一、安装插件sublimehighlight
1.打开https://github.com/n1k0/SublimeHighlight,点击右下方的download zip。
2.下载后解压缩。打开 Sublime Text,点击Sublime Text -> Preferences -> Browse Packages。

960B4388-4E33-4020-AC07-8A54E989955B

3.弹出Packages 窗口,将刚刚解压后的文件夹拖入 Packages 文件夹。
4.点击 Sublime Text -> Preferences -> Package Settings ->SublimeHighlight ->Settings – User
F1BCFD31-3751-44C2-9E68-177512375563
5.将以下内容复制进配置文件中并保存。
{
    “theme”: “friendly”,
    “linenos”: “inline”,
    “noclasses”: true,
    “fontface”: “Menlo”
}

二、使用方法
选中代码并右键,选择copy as HTML(html 格式) 或者 copy as RTF(富文本格式)
【如果需要复制到博客里就用 html 格式,如果是要复制到 word 文档里,就用富文本格式】,然后到其他地方粘贴即可。
55043519-EBF5-4CF6-AAD0-EA7809651431

三、主题更换
该插件自带的格式有:
  • autumn
  • borland
  • bw
  • colorful
  • default
  • emacs
  • friendly
  • fruity
  • manni
  • monokai
  • murphy
  • native
  • pastie
  • perldoc
  • rrt
  • tango
  • trac
  • vim
  • vs

它们的样式如图:

762C1FEA-A93C-4AA9-8828-242F4986004D

更换它们的方式是:
打开配置文件Sublime Text -> Preferences -> Package Settings ->SublimeHighlight ->Settings – User
“theme”: “friendly”,
中的 friendly 修改为以上任意一种主题的名称,保存即可。
如:
“theme”: “vim”,

《Macbook Pro概要》- Mac的各种功能使用方法

  • 使用AirDrop共享文件(通过 Wi-Fi 在 Mac 或 iOS 设备之间快速传输文件)
打开方式:
Mac:打开Finder后左边侧栏有AirDrop。(如果没有,可以Finder -> 偏好设置 -> 边栏 -> 勾选AirDrop)
iPhone:上拉菜单栏里面有AirDrop。
使用方法:
①先在电脑和手机都打开AirDrop
电脑发给手机:将要发送的文件拖放到要发送的设备的头像上面
|| 手机发给电脑:在图片/视频等文件界面APP上点分享,然后点对应的设备的头像

  • Thunderbolt雷电接口(thunderbolt是由Apple和Intel共同开发的新一代传输接口,双向传输、10Gbps带宽)
1.外部显示器:使用 Mini DisplayPort 转 VGA 转换器,将显示器连接到 MacBook Pro 上的 Thunderbolt 端口
2.买根转接线,就能连网线
3.有的相机厂商的设备支持雷电接口,可以用雷电接口传输照片视频
4.多显示器支持,由于可以单端口连接 6 个设备,理论上,你可以组织7屏工作平台了。
5.连接外置硬盘,速度近800Mb/s
6.连接 VGA 显示器或投影仪。 使用 Mini DisplayPort 转 VGA 转换器,将显示器连接到 MacBook Pro 上的 Thunderbolt 端口

  • HDMI端口(连接HDTV和投影仪)
能够轻松连接 HDTV 和投影仪,通过 HDTV 上的高清分辨率和多通道音频来播放影片和演示文稿等内容。
方法:连接 HDMI 显示器或 HDTV。将 HDMI 的电缆直接插入 MacBook Pro 上的 HDMI 端口。

  • 使用Spotlight搜索(Control + 空格键)
可以搜索任何内容。包括Mac上面的内容,维基百科、地图、新闻、电影、放映时间等。

  • Time Machine(为了保持文件安全,定期对Mac进行备份)
打开方式:
使用AirPort Time Capsule(单独销售) 或者 其他外部储存设备(例如移动硬盘、小米路由器【不过这个只能备份不能还原】) 连接电脑
系统偏好设置 -> Time Machine -> 开
使用方法:
  1.  自动备份您整台 MacBook Pro,包括系统文件、应用程序、帐户、偏好设置、音乐、照片、影片和文稿。
  2. 记住电脑在任意指定日期的状态,以便您可以重新访问 MacBook Pro 过去的状态,或者取回较旧版本的文稿。
  3. 您可以从 Time Machine 备份中恢复整个系统。因此,如果 MacBook Pro 出现了任何问题,您的文件都将安然无恙。

  • 使用 Handoff 跨设备间继续未完成的工作
支持的原生应用包括邮件,备忘录,联系人,日历,Safari,提醒事项,信息,地图,Pages,Numbers 和 Keynote。
打开方式:
Mac:系统偏好设置 -> 通用 -> 允许在这台 Mac 和 icloud 设备之间使用 Handoff
iPhone:设置 -> 通用 ->  Handoff&建议应用 -> 打开 Handoff
使用方法:
打开蓝牙(所有的苹果设备都需要登录同一个 iCloud 账号。)
手机切换到电脑:在iphone上编写邮件/备忘录等,在 Mac 上会出现一个独立的 dock 栏。在这个新的独立 dock 栏中展示了 iPhone 邮件/备忘录等的图标。在 Mac 上打开邮件/备忘录等,你就可以看到刚刚自己在 iPhone 上写了什么东西。
|| 电脑切换到手机:在Mac上编写邮件,在iPhone锁屏界面的左下角会显示邮件的图标,像打开相机快捷方式般上拉即可进入邮件应用。另一个方法是通过应用切换(多任务切换)界面可以看到邮件应用正在被使用。
 

 
  • 家人共享(家人之间可iCloud账户不同)
打开方式:
系统偏好设置 -> iCloud -> 设置家人共享
使用方法:
通过家人共享iTunes Store 、 APP Store 和 iBooks Store里的购买项目
还可以共享照片、家庭日历、提醒事项和位置等

  • AirPrint无线打印
可以使用无线打印的条件:
  • Wi-Fi 网络中支持 AirPrint 的打印机  
  • 一台网络打印机,或 Wi-Fi 网络上其他 Mac 所共享的打印机
  • 连接到 AirPort 基站 USB 端口的打印机

  • AirPlay (通过 AirPlay 镜像在电视机上显示 MacBook Pro 屏幕)
如果您的 HDTV 已连接到 Apple TV, 并且 Apple TV 与 MacBook Pro 处于同一个 Wi-Fi 网络,您可以将 MacBook Pro 显示屏镜像到电视屏幕,或将 HDTV用作第二台显示器。