![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
hellokazhang
不羁的游戏开发者,喝得惯红酒,吃得了大排档,不轻易给自己设限。
展开
-
multimap的增删改
#include#include#includeusing namespace std;int main(){ string xingming; string shuming; multimapmm; while(cin>>xingming>>shuming){ mm.insert(make_pair(xingming,shuming)); cin.cl原创 2012-07-09 10:52:00 · 411 阅读 · 0 评论 -
c++ primer 面向对象编程笔记
1) 动态绑定在C++中,通过基类的引用(或指针)调用虚函数时,发生动态绑定。引用(或指针)既可以指向基类对象也可以指向派生类对象。 (2) 虚函数1) 保留字virtual只在类内部的成员函数声明中出现,不能用在类定义体外部初相的函数定义上。 2) 派生类中虚函数的声明必须与基类中的定义完全匹配,转载 2012-07-11 10:04:59 · 487 阅读 · 0 评论 -
c++socket编程
分别建两个工程。。把cpp拷贝进去运行就可以了。。。server端: #include #include #pragma comment(lib,"ws2_32.lib")void main(){ //创建套接字 WORD myVersionRequest; WSADATA wsaData; myVersionRequest=MAKEWORD(1,1);转载 2012-07-11 22:16:27 · 7446 阅读 · 2 评论 -
命名空间与异常
命名空间:#include#includeusing namespace std;namespace zhang{ void show(){ cout }}namespace li{ void showtoo(){ cout }}using namespace zhang;using namespace li;int main()原创 2012-07-17 19:45:14 · 392 阅读 · 0 评论 -
运算符重载之(),++
#include#includeusing namespace std;class Person{public: Person(string name,int age){ this->name=name; this->age=age; } void show(){ cout } void operator()(){ cout }p原创 2012-07-18 15:35:28 · 334 阅读 · 0 评论 -
头文件源文件分离之动物和鱼
1新建anmial.h文件:#ifndef ANIMAL_H#define ANIMAL_Hclass animal{public: animal(); void eat(); void sleep();private:};#endif2新建fish.h文件:#ifndef FISH_H#define FISH_H#include"anima原创 2012-07-17 19:34:55 · 1348 阅读 · 1 评论 -
构造函数中,类的成员函数中出现了异常,析构函数能否正常调用
此处引用了某个人的帖子的回复,我觉得回答得不错,引用一下:**在c++中,内存分为heap(堆区)--放置由new动态分配的内存,stack(栈区)--放置临时(局部)变量,和静态存储区--放置静态和全局变量;**非局部静态变量,在main()函数前由编译器分配内存并初始化(构造),在main()结束后由编译器将其占用的内存释放(析构),所以这部分内存只要程序不结束就不会释放;原创 2012-07-19 10:38:38 · 1100 阅读 · 0 评论 -
C++ multimap的增删改
#include#include#includeusing namespace std;int main(){ string xingming; string shuming; multimapmm; while(cin>>xingming>>shuming){ mm.insert(make_pair(xingming,shuming)); ci原创 2012-07-09 09:20:53 · 621 阅读 · 0 评论 -
C++容器算法
#include#includeusing namespace std;int main(){ int a[]={1,2,3,4,5,6,7,8,9,10}; vectorv(a,a+10); fill(v.begin(),v.end(),20); for(vector::iterator iter=v.begin();iter!=v.end();++iter){原创 2012-07-09 13:18:24 · 325 阅读 · 0 评论 -
C++ primer术语
argument 实参block 块buffer 缓冲区built-in type 内置类型cerr 错误输出cin 标准输入class 类class type 类类型clog 日志输出comment 注释condition 条件cout 标注输出curly brace 花括号data structure 数据结构edit-compile-原创 2012-07-04 13:22:05 · 539 阅读 · 0 评论 -
C++之map find count
map插入值 例如mapwc;string s;insert(pair)------>wc.insert(make_pair(s,1))其中insert函数是有返回值的,返回什么呢?返回一个pair其中这个pair中的first元素是map的迭代器,second是bool,判断是否插入成功pair::iterator,bool> ret=wc.insert(make_pair原创 2012-07-08 22:20:32 · 2853 阅读 · 0 评论 -
函数对象
函数对象,一个类里面定义了一个操作符重载()操作,所以使用起来像函数#include#include#include#includeusing namespace std;class GTF{public: GTF(int size){ this->size=size; } bool operator()(const int aa){ retur原创 2012-07-10 15:57:46 · 425 阅读 · 0 评论 -
插入排序
#include#includeusing namespace std;templatevoid insertSort(T* array,int length){ T key; int i,j; for (i = 1;i { key = array[i]; for (j = i-1 ; j>=0; j--) //和0--(i-1)之间的每个元素进行原创 2012-07-12 18:16:16 · 523 阅读 · 0 评论 -
谁说c++栈不重要
#include#include#includeusing namespace std;int main(){ stacksstack; int a; while(cin>>a){ sstack.push(a); } stack::size_type t=sstack.size(); while(sstack.empty()!=true&&(t--)>原创 2012-07-08 18:59:15 · 423 阅读 · 0 评论 -
流迭代器iostream迭代器
#include#include#includeusing namespace std;int main(){ ostream_iterator out_iter(cout,"\n"); istream_iterator in_iter(cin),eof; while(in_iter!=eof){ *out_iter++=*in_iter++; } sys原创 2012-07-09 17:07:38 · 413 阅读 · 0 评论 -
c++之反向迭代器
#include#include#includeusing namespace std;int main(){ char s[]={'1','c','c'}; cout system("pause"); return 0;}#include#include#includeusing namespace std;int main(){ st原创 2012-07-09 18:50:29 · 653 阅读 · 0 评论 -
multiset和set的区别
写个程序,看运行结果过便知multiset允许存相同元素的值,这个vector有什么区别呢,区别就是multiset可以排序#include#include#includeusing namespace std;int main(){ int a[]={1,2,3,4,5,6,7,8,9,10,1,2,3,4,5}; int b[]={10,9,8,7,6,5,4,原创 2012-07-11 07:59:58 · 1047 阅读 · 0 评论 -
c++之模板编程
#include#include#includeusing namespace std;templateinline int compare(const T &a,const T &b){ if(a>b) return 1; if(a return -1; if(a==b) return 0;}int main(){ int a=10,原创 2012-07-11 14:57:35 · 651 阅读 · 0 评论 -
c++ 容器删除操作
学IT的,废话少说,直接看代码。#include#include#includeusing namespace std;int main(){ int a[]={1,2,3,4,5,6,7,8,9,10}; vectorv(a,a+10); listl(a,a+10); for(vector::iterator vi=v.begin();vi!=v.end();原创 2012-07-08 12:36:53 · 531 阅读 · 1 评论 -
find_first_of()与 find_first_not_of()
#include#includeusing namespace std;int main(){ string s="ab2c3d7R4E6"; string shuzi="0123456789"; string zimu="abcdefghijklmnopqrstuvwxyz"; string::size_type pop=0; while((pop=s.fi原创 2012-07-08 17:38:11 · 525 阅读 · 0 评论 -
algorithm算法初窥
其实algorithm里面的算法很多都类似的,参数基本都是一对迭代器或指针,和一个额外的参数。如:find函数#include#include#include#includeusing namespace std;int main(){ int a[]={1,2,3,4,5,6,7,8}; listl(a,a+8); list::iterator iter=原创 2012-07-09 11:55:18 · 404 阅读 · 0 评论 -
插入迭代器
插入迭代器,依赖algorithm头文件的replace_copy #include#include#include#include#includeusing namespace std;int main(){ int a[]={6,100,5,100,4,3,100,2,1}; vectorv(a,a+9); listl; //replace_co原创 2012-07-09 15:11:46 · 364 阅读 · 0 评论 -
数组指针与指针数组
数组指针和指针数组的区别数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的转载 2012-07-17 08:40:33 · 426 阅读 · 0 评论 -
vector操作整理
其迭代器函数原型:iterator begin();const_iterator begin() const;iterator end();const_iterator end() const;reverse_iterator rbegin();const_reverse_iterator rbegin() const;reverse_iterator rend();原创 2012-07-20 09:43:27 · 809 阅读 · 0 评论 -
模板特化(专门化)
#include#includeusing namespace std;templateint max(T &a,T &b){ if(a>b){ return 1; }else if(a return -1; }else{ return 0; }}templateint max(double &a,double &b){ cout原创 2012-07-19 09:08:50 · 391 阅读 · 0 评论 -
stack,deque,queue对比
stack堆栈,没有迭代器,支持push()方法。后进先出,top()返回最顶端的元素,pop()剔除最顶元素deque双端队列,支持迭代器,有push_back()方法,跟vector差不多,比vector多了个pop_front,push_front方法queue队列,先进先出,不支持迭代器,有push()方法,pop()剔除第一个元素,front()返回第一个元素代码如下:#原创 2012-07-20 15:09:35 · 12858 阅读 · 0 评论 -
几个容器比较容易混淆的方法(推荐)
vector:iterator insert(iterator it, const T& x = T());void insert(iterator it, size_type n, const T& x);void insert(iterator it, const_iterator first, const_iterator last);iterator erase(itera原创 2012-07-20 18:37:19 · 991 阅读 · 0 评论 -
c++程序员的必经之路
1.C++ primer2.C++程序设计语言 C++之父的作品3.C++标准库 STL4.TCP/IP协议详解 共3卷5.Oracle数据库和MySQl数据库的学习6.熟悉在linux环境下编程(C/C++)7.熟悉MFC8.数据结构9算法导论C++是一门易学难精的语言,我以我血溅c++。原创 2012-07-03 17:05:43 · 1005 阅读 · 0 评论 -
C++之stringstream分割和类型转换
#include#include#include#includeusing namespace std;int main(){ string s="hello my name is C++"; stringstream ss(s); string word; vectorvv; while(ss>>word){ vv.push_back(wor原创 2012-07-09 10:46:16 · 1837 阅读 · 0 评论 -
valarray数值,简单介绍
valarray可能大家都不是很熟悉,下面简单介绍一下:(下表是常用函数,跟cmath类似)1valarray在valarray头文件里,下面是valarray的构造与输出#include#include#includeusing namespace std;int main(){ int a[]={1,2,3,4,5,6,7,8,9,10}; valarray原创 2012-07-22 18:44:00 · 525 阅读 · 0 评论 -
clock计时器的使用和随机数的产生
clock是用来计时的,精确到ms级别clock()在头文件,返回值为clock_t就一个超大整形,下面是一个例子,计算机循环的时间#include#include#includeusing namespace std;int main(){ clock_t start,finsh; start=clock(); for(int i=0;i for(原创 2012-07-17 18:19:00 · 651 阅读 · 0 评论 -
C++之输出
#includeusing namespace std;int main(){cout<<"hello" "world" "!" <<endl; return 0;}#includeusing namespace std;int main(){cou\t<<"hell原创 2012-07-04 14:18:12 · 611 阅读 · 0 评论 -
举足轻重的extern
#includeusing namespace std;extern int a; //这里并不声明空间和内存,只是说明某个地方有这个变量int main(){ int a=10; //此处定义,赋值cout<<a<<endl; //此处输出10 return 0;} #includeusing nam原创 2012-07-04 16:06:46 · 426 阅读 · 0 评论 -
typeid与typedef
typedef可以用来定义类型的同义词。typeid是用来查看类型的,请看下面程序分析。#includeusing namespace std;int main(){typedef int zhangxing;typedef double shuangjingdu;zhengxing a=20;shuangjingdu b=30.25;原创 2012-07-04 19:41:23 · 471 阅读 · 0 评论 -
C++枚举
枚举的定义包括关键字 enum,后面是一个可选的枚举类型名,和一对花括号,花括号里面的是枚举成员。1默认地,第一个枚举成员赋值为0,后面的枚举成员比前面的大1,如enum open{input,output,append};此时open=0;output=1;append=2;enum open{input1=3,output1,append1};此时input1=3,output1=原创 2012-07-04 20:04:58 · 604 阅读 · 0 评论 -
那些被遗忘的cctype函数
这些函数都在cctype头文件定义isalnum(c) 如果C是字母或数字,则为TRUEisalpha(c) 如果C是字母,返回TRUEiscntrl(c) 如果C是控制字符,返回TRUEisdigit(c) 如果C是数字,返回TRUEisgraph(c) 如果C不是空格,但可以打印,返回TRUEislower(c) 如果C是小写,返回TRUEisprint(c)原创 2012-07-05 14:06:06 · 562 阅读 · 0 评论 -
C++之Vector初窥
vector是C++里面很好用的容器,泛型定义的,可以动态存取任何类型,包括内置类型和复合类型,vector在头文件定义1vector对象的初始化,一般是按照存储在Vector中元素的原有的默认构造函数来初始化,如string用“”初始化,int 用0初始化vector a //0个元素vector b //0个元素vectorc(20) //20个元素,默认值是0,20个0原创 2012-07-05 15:56:32 · 585 阅读 · 0 评论 -
C++数组输出,三种方式
#include#includeusing namespace std;int sum1(int a[10]){ int z=0; for(int i=0;i<10;i++){ z+=a[i]; } return z;}int sum2(int a[],int size){ int k=0; for(int i=0;i<size;i++){原创 2012-07-07 10:51:05 · 1332 阅读 · 0 评论 -
c++设计与编程之包含关系(包容关系)
在使用包含内容的时候,对于表示类X的对象,存在着两种主要的可选方式:1生命一个类型为X的成员2生命一个类型为X*或者X&的成员如果指针值绝不改变,那么除了效率问题和写构造函数,析构函数的方式之外,这些选择方案是完全等价的:class X{ public: X(int);};class C{ X a; X *p; X &r;public: C(i原创 2012-07-23 11:52:58 · 929 阅读 · 0 评论 -
c++之文件操作,(不以简单而不为,不以难而畏为)
操作相对简单,但不要以为简单而不动手,文件操作流在Java和C++都很重要,以下是雏形:(让您溅笑了)文件写入操作#include#include#includeusing namespace std;int main(){ ofstream file("c:\\hello.txt"); if(!file){ cout<<"can't open it"<<en原创 2012-07-21 21:27:10 · 1033 阅读 · 0 评论