- 博客(13)
- 收藏
- 关注
转载 fork()和多线程
一、fork()函数 在操作系统的基本概念中进程是程序的一次执行,且是拥有资源的最小单位和调度单位(在引入线程的操作系统中,线程是最小的调度单位)。在Linux系统中创建进程有两种方式:一是由操作系统创建,二是由父进程创建进程(通常为子进程)。系统调用函数fork()是创建一个新进程的唯一方式,当然vfork()也可以创建进程,但是实际上其还是调用了fork()函数。fork()函数
2014-08-29 16:29:01 1734
转载 基数排序
【1】基数排序以前研究的各种排序算法,都是通过比较数据大小的方法对欲排数据序列进行排序整理过程。而基数排序却不再相同,那么,基数排序是采用怎样的策略进行排序的呢?简略概述:基数排序是通过“分配”和“收集”过程来实现排序。而这个思想该如何理解呢?请看以下例子。(1)假设有欲排数据序列如下所示:73 22 93 43 55 14 28 65 39
2014-08-27 11:09:24 764
原创 逻辑移位和算术移位
逻辑移位:移位产生的空位由0来补充,比如11100右移移位变为01110算术左移同逻辑移位。算术右移有两种可选的方案:左边移入的位由0补充,或者由符号位来补充,这两种实现依赖于编译器。11100右移移位结果可能是01110或者11110。在程序中尽量不使用有符号数的右移操作,这样会使得程序的可移植性变差。对于有符号数右移,下面的代码可以判断编译器采用的逻辑右移还是算术右移# i
2014-08-23 09:19:26 5489
原创 《effective c++》读书笔记4
条款41:了解隐式接口和编译期多态n classes和templates都支持接口和多态n 对classes而言接口是显式的,以函数签名为中心,多态则是通过虚函数发生于运行期。n 对templates参数而言,接口是隐式的,奠基于有效表达式,多态则是通过template具现化和函数重载解析发生于编译器。条款42:了解typename的双重意义n 声明模板参数,前缀关键字
2014-08-22 21:24:47 772
原创 《effective c++》读书笔记3
条款26:尽可能延后变量定义式的出现时间std::string encryptPassword(conststd::string &password){std::string encrypted;encrypted=password;encrypt(encrypted);return encrypted;}这样定义即初始化encrypted付出的代价是一个构造函数和
2014-08-22 17:35:20 786
原创 《effective c++》读书笔记2
条款13:以对象管理资源使用RAII,获得资源后立刻放进管理对象,管理对象运用析构函数确保资源被释放。为防止资源泄露,请使用RAII对象,它们在构造函数中获得资源并在析构函数中释放资源。两个常被使用的RAII类是tr1::shared_ptr和tr1::auto_ptr。前者通常是较佳选择,因为其拷贝行为比较直观。若选择auto_ptr,复制动作会使被复制物指向null. 条款14
2014-08-22 15:31:06 808
原创 《effective c++》读书笔记1
条款1:视C++为一个语言联邦C++包括这四个部分:l Cl Object-Oriented C++l Template C++l STL n C++高效编程守则视状况而变化,取决于你使用C++的哪一部分 条款2:尽量以const,enum,inline替换#define下面这个宏夹带着宏实参,调用函数f:#define CALL_WITH_M
2014-08-22 12:22:23 813
转载 c++ 强制类型转换
c/c++强制类型转换Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意?A:转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为了类型转换一个简单对象为另一个对象你会使用传统的类型转换操作符。比如,为了转换一个类型为doubole的浮点数的指针到整型:代码:int
2014-08-22 12:21:37 764
原创 C++ traits特性
C++中的traits常用于STL中,用来提取类型信息。 比如定义一个函数模板,模板参数为T类型,返回T类型的值。template typename T::value_type f(T iter){return *iter;} 这个函数的返回值类型是T::value类型,这样T的类型是vector listdeque等类型时,都可以处理。但有一个例外,即T是普通指针类
2014-08-20 12:19:05 2451
原创 c++模板的一些语法
模板的部分特化template struct testClass{ testClass(){cout<<"I,O"<<endl;}};template struct testClass{ testClass(){cout<<"T*,T*"<<endl;}};成员模板template class v{public: template void in
2014-08-18 23:23:49 1222
转载 c++迭代器
1. 迭代器(iterator)是一中检查容器内元素并遍历元素的数据类型。(1) 每种容器类型都定义了自己的迭代器类型,如vector:vector::iterator iter;这条语句定义了一个名为iter的变量,它的数据类型是由vector定义的iterator类型。(2) 使用迭代器读取vector中的每一个元素:vector ivec(10,1);for(vector
2014-08-16 19:43:15 691
原创 最长递增子序列
1. 动态规划,使用一个数组保存当前的最大递增子序列长度,时间复杂度为O(N^2)# include # include # include using namespace std;int longestsub(int a[],int n){ int *dis=(int *)malloc((n+1)*sizeof(int)); dis[0]=1; int i,j; for(
2014-08-09 12:20:58 825
原创 双向链表实现队列
双向链表的结点包含前驱指针和后继指针,队列入队操作是在双向链表尾部添加元素,队列的出队操作是把双向链表的头结点删除,判断队列是否为空只要判断双向链表的头指针是否指向了NULL即可。# include # include using namespace std;struct queueNode{ int val; queueNode *pre; queueNode *next;
2014-08-02 10:59:18 3128
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人