C++
map-link
这个作者很懒,什么都没留下…
展开
-
数组的一些常见问题
数组求和求数组的最大值和最小值求数组的最大值和次大值求数组中出现次数超过一半的元素求数组中元素的最短距离求两个有序数组的共同元素求三个数组的共同元素找出数组中唯一的重复元素找出出现奇数次的元素求数组中满足给定和的数对最大子段和最大子段积数组循环移位字符串逆序组合问题合并两个数组重排问题找出绝对值最小的元素原创 2017-06-05 19:51:42 · 245 阅读 · 0 评论 -
memset是对字节赋值
如下demo是可以的,能把数组中的元素值都设置成字符1,#include #include using namespace std;int main(){ char a[5]; memset(a,'1',5); for(int i = 0;i cout system("pause"); return 0;}原创 2017-06-06 11:31:36 · 665 阅读 · 0 评论 -
C++函数参数中的省略号用法分析
参考其他博客原创 2017-06-19 10:29:28 · 465 阅读 · 0 评论 -
c++中reverse和resize的区别
reserve是容器预留空间,但并不真正创建元素对象,在创建对象之前,不能引用容器内的元素,因此当加入新的元素时,需要用push_back()/insert()函数。resize是改变容器的大小,并且创建对象,因此,调用这个函数之后,就可以引用容器内的对象了,因此当加入新的元素时,用operator[]操作符,或者用迭代器来引用元素对象。再者,两个函数的形式是有区别的,reserve函原创 2017-06-07 14:28:31 · 1958 阅读 · 1 评论 -
注意stringstream.str()临时变量的lifecycle
注意stringstream.str()临时变量的lifecycle点击打开链接原创 2017-06-23 16:32:29 · 191 阅读 · 0 评论 -
stringstream的用法
有待完善原创 2017-06-12 14:11:20 · 175 阅读 · 0 评论 -
c++访问权限的控制
不同继承方式的影响主要体现在:1、派生类成员对基类成员的访问控制。2、派生类对象对基类成员的访问控制。三种继承方式:1、公有继承(public)① 基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可访问。② 派生类中的成员函数可以直接访问基类中的public和protected成员,但不能访问基类的private成员。原创 2017-07-15 10:28:57 · 284 阅读 · 0 评论 -
序列化和反序列化
1、序列化:1)序列化概念:程序员在编写应用程序的时候往往需要将程序的某些数据存储在内存中,然后将其写入某个文件或是将它传输到网络中的另一台计算机上以实现通讯。这个将程序数据转化成能被存储并传输的格式的过程被称为“序列化”(Serialization),而它的逆过程则可被称为“反序列化” (Deserialization)。简单来说,序列化就是将对象实例的状态转换为可保持或传输的格式的过程原创 2017-07-15 11:07:55 · 296 阅读 · 0 评论 -
父类子类指针相互转换问题
参考下面两篇博客点击打开链接点击打开链接原创 2017-06-15 12:02:55 · 275 阅读 · 0 评论 -
C++成员函数在内存中的存储方式
C++成员函数在内存中的存储方式点击打开链接原创 2017-07-31 10:56:45 · 247 阅读 · 0 评论 -
关于C++ const 的全面总结
关于C++ const 的全面总结点击打开链接原创 2017-07-31 14:59:34 · 187 阅读 · 0 评论 -
C++中的static关键字的总结
点击打开链接原创 2017-07-31 15:18:46 · 182 阅读 · 0 评论 -
IO多路复用之select总结
http://www.cnblogs.com/Anker/archive/2013/08/14/3258674.html点击打开链接转载 2017-09-12 09:56:31 · 180 阅读 · 0 评论 -
C++ map注意事项
C++ map注意事项1、在map中,由key查找value时,首先要判断map中是否包含key。2、如果不检查,直接返回map[key],可能会出现意想不到的行为。如果map包含key,没有问题,如果map不包含key,使用下标有一个危险的副作用,会在map中插入一个key的元素,value取默认值,返回value。也就是说,map[key]不可能返回null。3、map提供了两原创 2017-09-12 10:48:47 · 205 阅读 · 0 评论 -
string copy on write
#include<iostream>#include<string>#include<cstdio>using namespace std; main(){ string str1 = "hello world"; string str2 = str1; string str3 = str2; ...原创 2018-09-18 20:17:44 · 160 阅读 · 0 评论 -
头文件重复包含和变量重复定义
参考该博客原创 2017-06-16 14:13:22 · 248 阅读 · 0 评论 -
大小端字节序存在的意义,为什么不用一个标准呢?
大小端问题主要涉及的是非单字节非字符串外的其余数据的表示和传递,如short型、int型等。大端和小端有其各自的优势。我们知道计算机正常的内存增长方式是从低到高(当然栈不是),取数据方式是从基址根据偏移找到他们的位置,从他们的存储方式可以看出,大端存储因为第一个字节就是高位,从而很容易知道它是正数还是负数,对于一些数值判断会很迅速。而小端存储 第一个字节是它的低位,符号位在最后一个字节,这样在做数原创 2017-05-15 20:04:35 · 771 阅读 · 0 评论 -
静态成员必须类外初始化
在C++中,类的静态成员(static member)必须在类内声明,在类外初始化,像下面这样。 class A{ private: static int count ; // 类内声明};int A::count = 0 ; // 类外初始化,不必再加static关键字因为静态成员属于整个类,而不属于某个对象,如果在类内初始化,会导致每个对象都包含该静态成员,这不原创 2017-03-29 21:52:38 · 410 阅读 · 0 评论 -
c++中set
set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值;另外,还得保证根节点左子树的高度与右子树高度相等。平衡二叉检索树使用中序遍历算法,检索效率高于vector、deque和list等容器,另外使用中序遍历可将键值按照从小到大遍历出来。构造set集合主要原创 2015-11-04 19:24:50 · 243 阅读 · 0 评论 -
C++中基类的虚析构函数问题
c++中如果定义基类,要使用多态的话,基类的析构函数必须定义为虚函数,这样在析构的时候,资源才会回收干净,否则只会回收基类资源,而不会回收继承类资源。原创 2015-09-18 19:28:27 · 415 阅读 · 0 评论 -
malloc和new的区别
1、malloc分配内存返回的是void*类型,我们自己要强制转换;new返回指定的类型;malloc 只管分配内存,并不能对所得的内存进行初始化,所以得到的一片新内存中,其值将是随机的;而int *pi=new int( );则会初始化为02、malloc分配内存一般用sizoeof,比如,int *p = (int*)malloc(sizeof(int)*4);如果你使用了:原创 2015-09-21 20:20:52 · 299 阅读 · 0 评论 -
c++以某种分隔符拆分一个字符串
void CAutoCheck::split(std::string src, std::vector &result, char chr) { size_t pos = src.find(chr); while (std::string::npos != pos) { std::string sub = s原创 2015-11-20 16:57:46 · 564 阅读 · 0 评论 -
查找中的性能调优策略
未完待续原创 2016-01-06 10:04:05 · 214 阅读 · 0 评论 -
向量计算两条link的夹角
double x1 = (*geom1)[0][num1-1].x(); double y1 = (*geom1)[0][num1-1].y(); double x2 = (*geom1)[0][num1-2].x(); do原创 2016-02-22 18:55:03 · 305 阅读 · 0 评论 -
sizeof()一个空类
C++标准规定类的大小不为0,空类的大小为1,当类不包含虚函数和非静态数据成员时,其对象大小也为1。 如果在类中声明了虚函数(不管是1个还是多个),那么在实例化对象时,编译器会自动在对象里安插一个指针指向虚函数表VTable,在32位机器上,一个对象会增加4个字节来存储此指针,它是实现面向对象中多态的关键。而虚函数本身和其他成员函数一样,是不占用对象的空间的。原创 2016-03-22 20:56:45 · 432 阅读 · 0 评论 -
TCP的长连接和短连接
1. TCP连接当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的经典的三次握手示意图:经典的四次握手关闭图:转载 2016-03-15 09:56:10 · 218 阅读 · 0 评论 -
简述stl 中set,vector,map的查找效率以及如何实现的?
简述stl 中set,vector,map的查找效率以及如何实现的?原创 2016-03-15 10:11:10 · 1783 阅读 · 1 评论 -
c++ 检查一个字符串中是否有汉字
#include#include#includeusing namespace std;int main(){ setlocale(LC_ALL, "zh_CN.utf-8"); //设置编码格式 string name_en = "路名"; int len_w = mbstowcs(NULL, name_en.c_str(), 0);原创 2016-06-27 15:38:13 · 893 阅读 · 0 评论 -
虚函数与纯虚函数
c++中多态介绍C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数1:用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。 2:存在虚函数的类都有一个一维的虚函数表叫做虚表,类的对象有一个指向虚表开始的虚指针。原创 2017-03-28 21:28:43 · 142 阅读 · 0 评论 -
c++中vector的一些知识
使用原则:尽量使用vector代替C风格的数组或者CArray;尽量使用算法代替手工写的循环;尽量使用vector本身的函数代替其他泛型算法;填充vector如果我们想用原始数组的内容填充vector,那么有很多种方式。下面来展示下vector的几个方法。 例如我们有数组int v1[10] = {0,1,0,0,3,0,0,4,4,4};初始化方式1: vector<int> v原创 2017-03-22 11:20:00 · 167 阅读 · 0 评论 -
c++中strlen和seizeof的比较
1、strlen的介绍1. strlen是函数,它的结果要在运行的时候才能计算出来,用来计算字符串的长度,不是类型占内存的大小。2、sizeof的介绍sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。后续有其他问题继续补充。。。原创 2017-03-22 15:32:46 · 1383 阅读 · 0 评论 -
c++中四种强制转换简析
c++中的转换分为隐式转换和显示转换四种,本文将重点介绍四种显示转换。可以参看这篇博文转载 2017-03-29 21:36:56 · 190 阅读 · 0 评论 -
c++ typedef类型定义
C++ typedef,顾名思义,为“类型定义”,可以解释为:将一种数据类型定义为某一个标识符,在程序中使用该标识符来实现相应数据类型变量的定义。1、定义结构体类型:#include int main (int argc, char *argv[]) { struct {int x; int y;} point_a, point_b; point_a.x = 10; poi原创 2015-09-28 10:28:32 · 627 阅读 · 0 评论