【算法】算法图解笔记_广度优先搜索 -Haskell代码实现

2019-08-25
阅读 2 分钟
2.8k
之前的广度优先遍历没有Haskell代码的实现,这里补上。下面代码使用了unordered-containers包的哈希表,用来实现图;containers包的Seq类型,用来实现队列,主要是因为使用内置的列表类型效率太差。

【GTK】GTK介绍

2019-06-27
阅读 3 分钟
16.4k
GTK是一款开源的、面向多平台的GUI工具箱,其英文全称为GIMP Toolkit。最初是Peter Mattis 和 Spencer Kimball 为GNU Image Manipulation Program (GIMP)编写,用来替代付费的Motif。在后续的发展中,它已经成为通用的GUI库,应用于越来越多的程序,Linux平台的图形应用程序的半壁江山都是使用GTK编写的。

【GTK】Windows下Haskell的GTK开发环境搭建

2019-06-10
阅读 3 分钟
3.9k
一个在Windows下相对小众的GUI框架-GTK,碰上一个相对小众的编程语言-Haskell,会碰出什么样的火花呢?现实的结果就是:相对于Linux,想在Windows下搭建好一个能工作的开发环境,简直是太难了!本篇文章介绍了一种可用的搭建方法。

【现代C++】原始字符串-raw string literal

2019-04-19
阅读 3 分钟
10.3k
在每个程序中,几乎都应用到字符串字面量。但传统的字符串字面量的语法对带有特殊字符的字面量的支持不友好,它引入了一些转义字符来表示字符串中这些特殊的字符,如:

【算法】算法图解笔记_广度优先搜索

2019-04-13
阅读 3 分钟
3k
你经常需要解决最短路径问题(shorterst-path problem)。解决最短路径问题的算法被称为广度优先搜索。广度优先搜索算法最早由Edward F. Moore 1959年在“如何从迷宫中寻找出路”这一问题中提出。

【C++】jsoncpp库问题一二

2019-04-10
阅读 2 分钟
6.1k
Json是数据交换常用的一种数据格式。C++标准库并没有包含任何Json标准的实现,所以我们要借助于一些第三方库,jsoncpp就是一个常用的库。由于工作中经常用jsoncpp,发现这个库问题不少,该篇文章本意是想深度吐槽一下这个函数库,但在寻找证据的过程中发现部分问题是由版本造成的,所以对问题进行一些说明,希望能帮助遇...

【算法】算法图解笔记_散列表

2019-04-08
阅读 2 分钟
1.6k
线性查找的时间复杂度O(n),二分查找为O(logn),有没有时间复杂度为O(1)的查找吗? 当然有,这就是散列表。 散列函数 散列函数“将输入映射到数字”。其必须满足一些要求。 它必须是一致的。对于同样的输入,输出必须是一样的。 最理想的情况是,将不同的输入映射到不同的数字。这样,不同的输入就会映射到不同的位置。 这...

【现代C++】"可选"在C++中的表达--std::optional<>

2019-04-06
阅读 5 分钟
6.9k
我们在很多编程场合下都需要用到“可选”的概念,比如可选的参数,可选的返回值等。但对这一方面,传统C/C++支持得略显不足。下面通过几个实例说明这一问题。

【算法】算法图解笔记_快速排序

2019-03-31
阅读 2 分钟
2k
分而治之(divide and conquer,D&C)是一种著名的递归式问题解决方法。只能解决一种问题的算法毕竟用处有限,而D&C提供了解决问题的思路,是另一个可供你使用的工具。

【算法】递归应用_常见算法的递归实现

2019-03-26
阅读 3 分钟
1.9k
用递归函数定义如下:(1) n = 0时,f(n) = 0(2) n = 1时,f(n) = 1(3) n > 1时,f(n) = f(n-1) + f(n-2)

【算法】算法图解笔记_递归

2019-03-24
阅读 3 分钟
2.9k
递归是个有意思的概念,正如在前面所说,递归能让算法的可读性大大提高,而且通常要比使用循环结构更能写出准确的算法。这本书形象引入了递归,并没有太深入,所以我进行了一点“添油加醋”。

【算法】算法图解笔记_选择排序

2019-03-21
阅读 2 分钟
1.7k
需要将数据存储到内存时,你请求计算机提供存储空间,计算机给你一个存储地址。需要存储多项数据时,有两种基本方式——数组和链表。但它们并非都适用于所有的情形,因此知道它们的差别很重要。

【算法】算法图解笔记_算法简介

2019-03-16
阅读 2 分钟
2.6k
在读《算法图解》这本书,这本书有两个优点: 手绘风格的图,看着很让人“入戏”; 算法采用Python语言描述,能更好的表达算法思想。 关于算法的学习有两点心得: 算法思想最重要,理解了思想,算法是很容易写出来的,所以尽量不要把过多精力放在细节上。比如,本书的快速排序,使用了列表推导式,很简单就把算法的思想描...

【现代C++】性能控的工具箱之string_view

2019-03-05
阅读 6 分钟
22.6k
在日常C/C++编程中,我们常进行数据的传递操作,比如,将数据传给函数。当数据占用的内存较大时,减少数据的拷贝可以有效提高程序的性能。在C中指针是完成这一目的的标准数据结构,而C++引入了安全性更高的引用类型。所以在C++中若传递的数据仅仅只读,const string&成了C++的天然的方式。但这并非完美,从实践来看...

【Linux系统编程】快速查找errno错误码信息

2019-02-28
阅读 1 分钟
6k
我们都知道,errno整型变量被普遍应用于*NIX C的异常处理中,其记录了最近一次的错误码。通过判断错误码的值,以此执行不同的错误处理,这是C语言典型的异常处理方式。其错误名称,比如EAGAIN、EWOULDBLOCK等,都通过宏定义,头文件是errno.h;错误码对应的描述,可以通过strerror输出。

【Linux系统编程】普通用户绑定(bind)特权端口

2019-02-25
阅读 1 分钟
9.3k
最近在学Haskell,今天用Haskell的Network.Socket模块实现了一个简单的基于TCP的daytime服务程序。程序运行阶段报了以下的错误:

【Haskell】《魔力Haskell》Ch01~Ch10勘误总结

2019-01-30
阅读 2 分钟
3.5k
想了解下Haskell,于是乎就买了三本纸质书籍:《魔力Haskell》、《Haskell函数式程序设计》和《Haskell函数式编程入门》,结合网上免费的电子版《Learn You a Haskell》,相互映照来学习。现在的进度是看完了《Learn You a Haskell》,《魔力Haskell》看完了前10章,另外两本仅仅看了一些开头。

对现代C++的一点看法

2019-01-09
阅读 3 分钟
4.8k
背景 逛水木社区C++版块,看到了一篇很有意思的帖子--《C++20会变得陌生》。楼主贴出了分别用C++11 和 C++20编写的代码,如下: {代码...} 以上代码实现了数据操作: 从向量v里筛选出偶数的元素 将以上得到的每个元素分别乘以2 将以上得到的每个元素分别打印出来 C++11 通过使用algorithm里的几个函数按步骤实现;而C++2...

【C++】一种典型隐秘的多次delete的情况

2019-01-01
阅读 2 分钟
4.1k
本文介绍分析一种多次delete动态内存的情况。说是典型,是因为这个问题已经在我两个同事身上发生过;说是隐秘,是因为一旦发生问题,靠肉眼很难确定原因。

foo、bar到底是什么意思

2018-12-24
阅读 1 分钟
6k
在学习编程语言的过程中,尤其使用的是英文的书籍,我们经常发现一些foo、bar、baz之类的名字,要么是变量的名字,要么是文件的名字。。。深究起来完全不明所以。这到底是什么意思呢?

【C++】为什么可以while(std::cin >> input)

2018-12-20
阅读 2 分钟
1.6k
前几天在回答问答栏目的问题时,犯了一个错误,本文章是关于错误原因的分析。 我将问题中的程序简化为以下代码: {代码...} 当时我认为while循环会一致循环下去,因为>>操作符的重载是这样的: 总是返回basic_istream的引用,因为不为空,所以转换成true。可转念一想,以前我也这么写过,而且很多人也这么写,应该...

两款国产的GUI框架

2018-11-25
阅读 1 分钟
7.7k
因要写一些小工具,图形用户界面是要有的,就看了一些C++ GUI框架。说到GUI框架,我们脑海中浮现的可能就是:MFC、QT、GTK+、wxWidgets、FLTK等这些比较“流行”的框架。但凡任何一本讲C++图形编程的书籍几乎会拿前面提到的一款或几款讲。但在搜集资料的过程中,看到了两款国产的GUI框架,给了我很大的惊喜,所以这里记录...

匈牙利命名法

2018-09-10
阅读 2 分钟
7.5k
匈牙利命名法(HungarianNotation)是由匈牙利裔美国人Charles Simony发明的,由于其单词排列顺序类似古怪的匈牙利姓名而得名。

令人头疼的命名

2018-07-30
阅读 2 分钟
1.8k
命名重要吗?重要!!可以类比现实中的姓名,姓名当然重要,它不止是一个符号,同时饱含其他方面的希冀。同样,在编写程序时,对变量、函数等的命名也极其重要,不合适的命名可能来自不恰当的概念体系,某个糟糕的命名很可能会引起其他人的混淆,为出错埋下了种子。。。

开发环境还是选Linux好

2018-07-27
阅读 2 分钟
3.2k
因平台建设,笔者最近在调研图数据库Neo4j。在调研过程中,遇到的问题真的是波澜起伏不定,心神疲惫不堪。首先声明,这些问题不是Neo4j的问题,而是跟我们的开发环境有关。

C++实践:运算符优先级“错误”

2018-03-07
阅读 2 分钟
2.2k
运算符是基本的语言元素,虽然接触编程语言的年岁不短了,但有时面对着一些表达式,仍不能立马确认运算顺序。我相信很多人也有我这方面的疑惑,今天就把一些“设计错误”的运算符拉出来溜溜。

C++实践:VC++ for变量作用域的“bug”

2017-08-13
阅读 2 分钟
2.1k
VC 6.0是微软98年出品的一款经典的C/C++ IDE,想必很多人用过,我在大学时C++课程的上机软件就是这老兄。那一年还出了C++98标准。按照微软以前的作风,其对标准的支持是相对滞后的,所以VC 6.0并不完全兼容C++98标准。这篇文章说的就是其中一个不兼容的情况--for结构变量作用域的差异。

C++实践:STL容器reserve

2017-08-06
阅读 1 分钟
2.5k
The size of numbers: 0The first elem of numbers: 10The second elem of numbers: 20