自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SUMUP

It's never too old to learn.

  • 博客(21)
  • 收藏
  • 关注

原创 第9条:慎重选择删除元素的方法

1、要删除容器中有特定值的所有对象      如果容器是vector、string或者deque,则使用erase-remove习惯用法。#include #include #include using namespace std;int main(){ vector veci; for(int i=0;i<10;++i) { veci.push_back(2*

2017-10-31 09:22:34 214

原创 list的splice方法

#include #include using namespace std;int main (){ std::list mylist1, mylist2; std::list::iterator it; // set some initial values: for (int i=1; i<=4; ++i) mylist1.push_back(i);

2017-10-28 17:44:45 2300

原创 const iterator和const_iterator的区别

#include#includeusing namespace std;int main(){ vector vec; for(int i=0;i<10;++i) vec.push_back(i); const vector::iterator iter = vec.begin();//const迭代器的使用 cout<<*iter<<endl;//0 *iter

2017-10-26 17:06:40 281

原创 容器的最后一个元素是否大于第一个元素

#include#includeusing namespace std;templatebool lastGreaterThanFirst(const C& container){ if(container.empty()) return false; typename C::const_iterator begin = container.begin();//= 赋值

2017-10-26 17:04:27 199

原创 大小端

大端(Big-endian)和小端(Little-endian)是一个很重要的概念。假如现有一32位int型数0x12345678,那么其MSB(Most Significant Byte,最高有效字节)为0x12,其LSB (Least Significant Byte,最低有效字节)为0x78,在CPU内存中有两种存放方式:(假设从地址0x4000开始存放)大端是数的高字节存放到低内存

2017-10-15 19:55:42 957

原创 设计一个栈实现最大值函数

/**设计一个栈结构,使得取出栈中最大值时间复杂度为O(1)就是开辟多一个存储最大值索引的栈,该栈和存储数据的栈保持同步,即栈顶指针同时作用这两个栈。*/#include using namespace std;class myStack { public: myStack() { MAX = 10;//栈的容量 top = -1;//oriSTack和ma

2017-10-08 17:36:42 1062

原创 构造函数中是否可以调用虚函数

1. 从语法上讲,调用完全没有问题。2. 但是从效果上看,往往不能达到需要的目的。Effective 的解释是:派生类对象构造期间进入基类的构造函数时,对象类型变成了基类类型,而不是派生类类型。同样,进入基类析构函数时,对象也是基类类型。所以,虚函数始终仅仅调用基类的虚函数(如果是基类调用虚函数),不能达到多态的效果,所以放在构造函数中是没有意义的,而且往往不能达到本来想要的效

2017-10-08 14:46:24 7007 1

原创 图的基本应用

最小生成树Prim算法适用于求解边稠密的图的最小生成树。Kruskal算法适合于边系数而顶点较多的图。最短路径Dijkstra算法Floyd算法拓扑排序有向无环图:一个有向图中不存在环,则称为有向无环图,简称DAG图。AOV网:如果DAG图表示一个工程,其顶点表示活动,用有向边表示活动Vi必须先于活动Vj进行的这样一种关系,则将这种有向图称为顶点表示活动的网

2017-10-08 10:36:51 428

转载 top K问题

top-K 问题是一类经典的问题,它能解决许多海量数据处理相关的问题,例如在1亿个ip中找出访问次数前1000的ip,在海量搜索字符串中找出搜索频率排在前十的搜索字符串等等。下面我们由浅入深对其进行分析。我们可以将这类问题分为三个方向考虑:        1.将输入内容(假设用数组存放)进行完全排序,从中选出排在前K的元素即为所求。有了这个思路,我们可以选择相应的排序算法进行处理,目前来看

2017-10-07 18:23:57 366

转载 STL容器的底层实现

底层容器实现 http://www.cnblogs.com/hustlijian/p/3611424.html

2017-10-07 17:17:28 318

原创 删除vector重复元素

#include#include#includeusing namespace std;int main(){ vector veci; for(int i=0;i<10;++i) { veci.push_back(i); veci.push_back(i); veci.push_back(i+2); } vector::iterator iter

2017-10-07 12:06:43 311

原创 vector删除元素

删除指定的元素7#include#includeusing namespace std;int main(){ vector veci; for(int i=0;i<10;++i) { veci.push_back(i); veci.push_back(i); //veci.push_back(i+2); } vector::iterator i

2017-10-06 12:02:21 310

原创 Hash表(哈希表、散列表)

一、基本概念散列函数:一个把查找表中的关键字映射成该关键字对应的地址的函数,记为Hash(key)=Addr。(地址可以是数组下标,索引,或内存地址等)冲突:散列函数可能会把两个和两个以上的不同关键字映射到同一地址。(冲突不可避免,所以要设计好的处理冲突的方法。)同义词:发生碰撞的不同关键字为同义词。散列表:根据关键字直接进行访问的数据结构。散列表是建立在关键字和存储地址之间的一种

2017-10-06 10:14:19 575

原创 C++单例模式

#includeusing namespace std;class Singleton{ public: static Singleton& instance(){return s;};//返回一个引用而不是指针,是因为用户可能不小心删除指针 int getValue(){return i;}; void setValue(int x){i=x;}; private:

2017-10-02 20:08:14 131

原创 C++11启动线程的多种方式

1、通过函数指针创建线程#include#includeusing namespace std;void counter(int id,int numIterations){ for(int i=0;i<numIterations;++i) { cout<<"Counter "<<id<<" has value "<<i<<endl; }}int main(){

2017-10-02 15:16:28 3422

原创 C++11多线程原子类型

C++11中10个线程同时竞争资源,会出现竞争问题处理方式1,mutex#include#include#include#include#include #include #includeusing namespace std;mutex mut;void func(int &counter){ mut.lock(); for(int i=0;i<1

2017-10-01 22:01:59 223

原创 函数指针的使用实例

#includeusing namespace std;int inc(int a){ return (++a); } int multi(int *a,int *b,int *c) { return (*c=*a**b); } typedef int (*FUNC1)(int in);//typedef简化函数指针的定义 typedef int (*FUNC2

2017-10-01 20:34:58 901

转载 C++11四种强制类型转换

1、  static_cast:功能:完成编译器认可的隐式类型转换。格式type1 a;type2 b = staic_cast(a);将type1的类型转化为type2的类型;使用范围:(1)基本数据类型之间的转换,如int->double;int a = 6;double b = static_cast(a);(2)派生体系中向上转型:将派生类指针或引用转化为基

2017-10-01 17:50:05 1715

原创 strcpy时如何有效的在堆区申请内存

#include#include#includeusing namespace std;/* 1.崩溃 void mac(char *p){ char* t; t=(char*)malloc(sizeof(char)*100); p=t; }int main(){ char *str=NULL;//str指向地址为空 char array[]="abcdef";

2017-10-01 17:05:26 489

原创 确保不是在栈区申请内存

//运行Test()会有怎样的结果 #include#includeusing namespace std;char *GetMemory(void){ char p[] = "hello world";//局部变量,运行后会自动销毁 return p;}void Test(void){ char *str = NULL; str = GetMemory();

2017-10-01 16:58:58 155

原创 C++常见面试题(三)-static总结

1、不考虑类1)隐藏当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。例如,同时编译两个源文件a.cpp和main.cpp。如果,在一个文件中的变量或函数加了static就会对其他文件不可见。2)默认初始化为0包括未初始化的全局静态变量和局部静态变量3)保持局部变量的内容持久静态局部变量的生存期为整个源程序,但是其作用域仍与局部变量相同。

2017-10-01 15:45:02 684

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除