关闭

【STL学习】优先级队列Priority Queue详解与C++编程实现

优先级队列Priority Queue介绍 优先级队列是一个拥有权值观念的queue。它允许在底端添加元素、在顶端去除元素、删除元素。 优先级队列内部的元素并不是按照添加的顺序排列,而是自动依照元素的权值排列。权值最高者排在最前面。 缺省情况下,优先级队列利用一个大顶堆完成。关于堆可以参考:STL堆详解与编程实现 优先级队列以底部容器完成其所有工作,具有这种“修改某物接口,...
阅读(13321) 评论(0)

【STL学习】堆相关算法详解与C++编程实现(Heap)

堆简介 堆并不是STL的组件,但是经常充当着底层实现结构。比如优先级队列(Priority Queue)等等。 堆是一种完全二叉树,因此我们可以用数组来存储所有节点。在这里的实现中,采用了一个技巧:将数组中索引为0的元素保留,设置为极大值或者为极小值(依据大顶堆或者小顶堆而定)。那么当某个节点的索引是i时,其左子节点索引为2*i,右子节点索引为2*i+1.父节点是i/2(这里/表示高斯...
阅读(15358) 评论(0)

【Linux】Ubuntu下C语言访问MySQL数据库入门

使用的系统是Ubuntu 11.10.数据库是MySQL。 MySQL数据库环境配置 首先需要安装MySQL客户端和服务器,命令行安装方式为: sudo apt-get install mysql-server mysql-client 然后,要使用C语言编程访问数据库,需要另外安装一个开发包: sudo apt-get install libmysqlclient15-...
阅读(9583) 评论(7)

【Linux】Vim编辑器-批量注释与反注释

vim编辑器---批量注释与反注释 在使用vim编写代码的时候,经常需要用到批量注释与反注释一段代码。下面简要介绍其操作。 方法一 块选择模式 插入注释: 用v进入virtual模式 用上下键选中需要注释的行数 按Control+v(win下面ctrl+q)进入列模式 按大些“I”进入插入模式,输入注释符“#”或者是"//",然后立...
阅读(53792) 评论(3)

【Linux】进程间通信-信号量详解及编程实例

前面一篇文章线程同步之信号量同步 讲的是线程之间的信号量,这篇讲的更加具有通用性,能够实现进程之间的同步。 信号量概述 信号量定义: 它是一个特殊变量,只允许对它进行等待和发送信号这两种操作。 P(信号量变量sv):等待。如果sv大于0,减小sv。如果sv为0,挂起这个进程的执行。V(信号量变量sv):发送信号。如果有进程被挂起等待sv,使其恢复执行。如果没有进行被挂起等待...
阅读(14509) 评论(3)

【Linux】进程间通信-命名管道FIFO

命名管道概述 如果我们要在不相关的进程间交换数据,那么使用FIFO文件将会十分方便。 FIFO文件通常也称为命名管道(named pipe)。命名管道是一种特殊类型的文件,它在文件系统中以文件名的形式存在。 创建命名管道 创建命名管道一般有两种方式: 命令行方式 一个比较旧的方式是: mknod filename p 这个命令并未出现在X/Open规范的命令列表中,所以...
阅读(13025) 评论(1)

【Linux】线程同步之信号量同步

linux中两种基本的同步方法是信号量和互斥量。这两种方法很相似,而且它们可以相互通过对方来实现。 信号量概述 下面介绍用信号量进行同步。 信号量概念由荷兰科学家Dijkstra首先提出。信号量是一个特殊类型的变量,它可以被增加或者减少。但对其的关键访问被保证是原子操作,即使在一个多线程程序中也是如此。 信号量有两种类型: (1)二进制信号量。它只有0和1...
阅读(8404) 评论(2)
    个人资料
    • 访问:1717230次
    • 积分:14025
    • 等级:
    • 排名:第912名
    • 原创:122篇
    • 转载:15篇
    • 译文:6篇
    • 评论:928条
    博客专栏
    公告
    博客已迁移至:http://xiajunhust.github.io/