- 博客(13)
- 资源 (2)
- 收藏
- 关注
原创 string的sso实现
sso的全称是Small String Optimization,小字符串优化。struct _Alloc_hider : allocator_type // TODO check __is_final { _Alloc_hider(pointer __dat, const _Alloc& __a = _Alloc()) : allocator_type(__a), _M_...
2018-05-10 20:13:00 1361
翻译 03静态编程
当类模板产生实例时,编译器生成:1.每个成员在类级别的签名2.所有静态常量和typedef3.严格需要的函数体当需要同样的实例的时候,通过查找来找到。例如:template <size_t N>struct sum_of_integers_up_to{ static const size_t value = N + sum_of_integers_up_to<N-1>...
2018-05-10 10:56:39 218
翻译 02小对象工具
如果需要保证类型T包含一个名为value的常量或名为type的类型,可以这样写:template <typename T>void myfunc(){typedef typename T::type ERROR_T_DOES_NOT_CONTAIN_type;const int ASSERT_T_MUST_HAVE_STATIC_CONSTANT_value(T::value)...
2018-05-09 14:55:26 152
翻译 01 模板
编译时常量语语法是static const [[integer type]]name=value编译时常量可以是:1.整型字面值,如27,0x052.sizeof和具有整型结果的非标准语言运算符,如__alignof__3.非类型模板参数template<int N>class AnotherClass{SomeClass<N>myMember;//这里的N就是};4.整型...
2018-05-08 10:17:55 183
原创 iterator
迭代器首先要看的是一些空类: struct input_iterator_tag { }; struct output_iterator_tag { }; struct forward_iterator_tag : public input_iterator_tag { }; struct bidirectional_iterator_tag : public forward_ite...
2018-05-08 08:54:20 267
原创 shared_ptr的拷贝构造函数
假设shared_ptr的模板参数为T,它的一个构造函数为:template< class Y >explicit shared_ptr( Y* ptr );其中T可以等于Y,也可以不等于Y。那么对于它的拷贝构造函数:shared_ptr( const shared_ptr& r ) noexcept;和template< class Y >shared_p...
2018-05-07 22:41:19 4475
原创 crypt函数
getspnam函数可以根据用户名返回对应shadow文件中的信息,函数原型为struct spwd *getspnam(char *name);,头文件为shadow.h。返回的信息存储在spwd结构中,struct spwd {char *sp_namp; /* Login name. */char *sp_pwdp; /* Encrypted password. */long int ...
2018-05-06 20:59:09 1765
原创 C++11 std::thread::id
C++11 std::thread::id其实是一个内部类:class thread{... class id{ ... };...};id里面有一个私有的类似typedef unsigned long int pthread_t;的数据成员。当初遇到id的时候以为它就是一个类似int的东西。在程序的某个地方需要一个数值的id,需要std::this_thre...
2018-05-06 13:45:12 3084
原创 windows下的signal(),pthread_cancel()
windows下的signal()只支持有限的信号:// Signal types#define SIGINT 2 // interrupt#define SIGILL 4 // illegal instruction - invalid function image#define SIGFPE 8 // floating p...
2018-05-06 13:23:24 922
原创 01关于对象
在C语言中,数据和操作是分开声明的。C++将数据和操作封装在一起。C++的数据成员包含在类对象中,成员函数不包含在类对象中。非内联函数只产生一个函数实例,内联函数在每一个调用处展开。C++封装数据和操作带来的开销主要由虚函数机制和虚基类函数引起的。还有一些多重继承下的额外负担。C++有静态和非静态两种数据成员,静态,非静态和虚拟三种成员函数。简单对象模型为每一个数据成员和成员函数分配一个槽,每个槽...
2018-04-19 13:11:36 254
原创 类型泛化
在C++中,template<typename T,...>vector{...};如果我们写vector<int> vec;则T=int。在python中有类似的用法。from typing import TypeVarT=TypeVar('T');class A(object): def __init__(self): print("A"); cla...
2018-04-18 23:17:45 1210
原创 <memory>:allocator
<memory>中的allocator作为STL中默认的内存分配器,它的定义如下:template<typename _Tp>class allocator: public __allocator_base<_Tp>{public: typedef size_t size_type; typedef ptrdiff_t di...
2018-04-18 22:25:40 217
原创 <exception>
<exception>中定义的exception类很简单:class exception{public: exception()noexcept{} virtual ~exception()noexcept{} virtual const char*what()const noexcept{ return "std::exception"; ...
2018-04-18 21:37:44 165
TCP IP architecture design and implementation in linux
2018-06-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人