从MinGW迁移至Cygwin

0. 原因

MinGW bug太多辣~什么显示不全、乱码等问题都可以通过切换至Cygwin来解决

1. 安装 && 配置

下载:https://cygwin.com/install.html

完成后打开

选安装目录和下载目录什么的可以一路next

然后选择是否使用代理,因为要用国外的镜像站,这里我用了SS/SSR的配置,跟浏览器插件里的配置一样。如果你选择国内镜像站,可以选择直接连接。

选择镜像站点,因为VPS在日本,所以这里我随便选了一个JP的镜像站,速度还不错。试了一下清华的镜像站,有点慢(代理关闭)。

之后观看这个视频,介绍比较详细:How to install Cygwin C/C++ compiler and configure code blocks IDE

大概就是要安装gcc-core,gcc-g++,GDB,make,之后一路next,有connection error的时候retry一下就好啦

如果不在命令行下使用,只在IDE里使用,可以不加环境变量。因为我把带MinGW的git添加到环境变量了,所以怕冲突就没把Cygwin加进去

最后打开 C:\cygwin64\cygwin.bat ,测试一下:

如果配置了环境变量要在cmd里进行上述测试

3. 在CLion中从MinGW迁移至Cygwin

配置编译器:File -> Settings  -> Build, Execution, Deployment -> Toolchains

点“+”号新建,下拉菜单选Cygwin,多等一会儿,会自动检测到。

然后将原来的MinGW配置删除,或者下移,否则默认还是MinGW。

最后,File -> Reload CMake Project(否则会出现Cmake Error: could not load cache)

重新加载时间稍长(CLion真吃配置)

阿里巴巴C++研发实习生面试挂经

前言:菜就是菜 ——节选自《节选》

内推,先完善信息,没有笔试环节,接着进行评测(心理素质之类的),1个多小时后收到了电面邀请的电话(有点快),约定第二天晚上十点后进行电面。第二天提醒安装钉钉,重新约定了电面时间。

正式电面:打开阿里的在线编辑器和在线视频,都无法获取摄像头,于是改为电话面试。

上来是一道编程题,手动实现memmove()函数,主要是考察内存和指针,要注意内存重叠问题(这块儿卡了一下)。然后叙述实现思路(根据内存地址高低不同来选择正向还是反向复制)

用没用过STL,用过哪些,vector和list有什么不同,分别是如何实现的(数组,双向链表),vector内存是如何增长的(1.5或2倍,其实答一个就行),为什么是这个数字(编译器实现不同,vs是1.5,gcc是2)。map如何实现的(红黑树),查询时间复杂度(lgn)。allocator有什么用(知道是分配内存用的,但是只用过默认的,没答上来)

菱形继承问题,虚函数怎么实现(虚函数表)

继续阅读“阿里巴巴C++研发实习生面试挂经”

如何升级MinGW

  1. Run shell (cmd or sh)
  2. Update package list (need Internet connection):

    mingw-get update

  3. After this run upgrade

    mingw-get upgrade

After this your mingw packages should be upgraded to latest versions.

There is also GUI version called  MinGW Installation Manager and located typicaly at


来源:https://stackoverflow.com/questions/9865319/how-to-update-gcc-in-mingw-on-windows

 

STL学习之lower_bound()和upper_bound()

lower_bound() 和 upper_bound() 使用二分法查找有序序列中的下界/上界的值,返回一个迭代器。

ForwardIter lower_bound(ForwardIter first, ForwardIter last,const _Tp& val)

返回一个非递减序列[first, last)中的第一个大于等于值val的位置。

ForwardIter upper_bound(ForwardIter first, ForwardIter last, const _Tp& val)

返回一个非递减序列[first, last)中第一个大于val的位置。

应注意大于等于和大于

在Sublime Text 3中配置gcc/g++编译器(一键编译运行)

这是第一篇用Markdown写的文章(≧∀≦)
好用!

0. 需求

  • Sublime好用
  • 写题用Sublime,编译运行用IDE,来回切换太麻烦
  • Sublime自带的C++ Single File Build System不够好用
  • 网上许多自定义的Build System编译和运行是分开的(即有一个Run选项)于是综合网上的各版本写了一个以下统一使用g++演示,如需gcc直接替换即可

1. 安装MinGW

a. 下载,并安装MinGW

官网:mingw.org,安装过程略

b. 配置环境变量

在Path中添加你MinGW中的 /bin目录

例如,我的MinGW安装在C盘根目录下,要添加的环境变量就是 C:\MinGW\Bin

注意各项之间用分号隔开(Win10可以直接点击新建)

c. 测试g++

  • 打开cmd,输入g++,显示fatal error则表示配置成功
  • 输入g++ -v可显示版本

2. 配置Build System

a. 新建Build System

在sublime中,选择 Tools->Build System->New Build System

将以下内容复制到新建的文件中

 

这一段代码在点Build之后会直接在弹出的cmd中运行,不会在sublime自带的console中显示

用了cmd的/c参数,很有意思,参见文末“参考”

如果要使用gcc,将g++改为gcc即可

保存到(默认就是),命名任意,例如C++.sublime-build

C:\Users\你的用户名\AppData\Roaming\Sublime Text 3\Packages\User

b. 备份Build System(可选)

C:\Users\你的用户名\AppData\Roaming\Sublime Text 3\Packages\User文件夹备份即可


3. 测试

Tools->Build System中选择你刚才保存的Build System(名称与文件名一样)

随便写一段程序,比如hello world,保存

点击 Tools->Build
或按 Ctrl+Shift+P输入 build,选择 Build With: C++
或按 Ctrl+B

开始编译运行

弹出cmd显示结果即配置成功

这样写题的时候再也不用来回切换sublime啦

#


2018-3-7 更新:添加c++11支持

 

 


参考:
Build Systems – Basics: http://docs.sublimetext.info/en/latest/reference/build_systems/basics.html

Cmd:
https://technet.microsoft.com/en-us/library/bb490880.aspx

如何让sublime text 2可以支持C语言的编译和run?: https://www.zhihu.com/question/20921786