本文用C++实现简单的二叉查找树。其中某些函数有两个版本,一个是用于内部调用,一个是用于外部调用。绝大多数函数都是通过递归实现,这也显示出递归的强大。 其中:clone函数的巧妙应用实现了操作符的重载 1/************************************************************************/ 2/* 二叉寻找树的实现 */ 3/******************************...
extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的,C++的规则在翻译这个函数名时会把fun这个名字变得面目全非,可能是fun@aBc_int_i...
一、list介绍:List由双向链表(doubly linked list)实现而成,元素也存放在堆中,每个元素都是放在一块内存中,他的内存空间可以是不连续的,通过指针来进行数据的访问,这个特点使得它的随机存取变得非常没有效率,因此它没有提供[]操作符的重载。但是由于链表的特点,它可以很有效率的支持任意地方的插入和删除操作。二、用法1、头文件#include <list>
//list属于std命名域的,因此需要通过命名限定,例如using std::list;2、定...
当我回过头来看第2遍《thinking in C++》的时候(虽然已经是三个月以后了),我发现我可以很清晰地看懂friend和复杂的函数指针了。个人感觉一开始并没有从内心接受这两种概念,所以书里的说明都理解不了,但现在对C++有些熟悉了,再看发现其实这个很单间。所以技术书籍还是多看几遍才能真正消化,第一次只是了解,不必全懂,而且一定不要求全懂,实在看不懂就跳过去。同学们,加油!原文:http://blog.csdn.net/lihb018/article/de...
程序在内存有五个存在区域:A:动态区域中的栈区 B:动态区域中的栈区C:静态区域中:全局变量 和静态变量 (这个区域又可以进一步细分为:初始化的全局变量和静态变量 以及 未初始化的全局变量和静态变量 )D:静态区域中:文字 数字 常量E:静态区域中:代码区(就是编译后的二进制代码 指导CPU怎么运行的玩意)×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××栈,程序运行的时候 需要就...
1 #include <iostream>2 #include <string>3 4usingnamespace std;5 6struct CDAccount7{8double balance; //余额 9double rate; //利息 10int term; //存期 11};12 13struct Date14{15int year;16int month;17int day;18};19 20struct Person21{22string name;23 Date birthday;24 CDAccount account;25 26};27 28//**************************************** 29void get_data(CDAccount& account);30doub...
1.解析一个正确的模板类 (1)首先,我们想创造一个模板,可以先针对一个特定的类型参数设计它的行为方式,然后在对抽象的一般类型进行推广。例如我们可以先设计String<char>类的具体实现,然后再推广到String<C>类模板。 (2)类模板的名字是不能重载的。所以,如果在某个作用域内声明了一个类模板,就不能有其他同样名字的实体了。template<class T> class String{/*...*/};
class String {/*...*/}; ...
<pre name="code" class="cpp">/**
* 功能:全局变量的使用
* 时间:2014年7月31日15:14:30
* 作者:cutter_point
*/#include<iostream>using namespace std;int cutter_point;void fun1();int main()
{cutter_point=94;cout<<"cutter_point:"<<cutter_point<<endl;fun1();cout<<cutter_point<<endl;return 0;
}/*** 功能:外部变量* 时间:2014年7月31日15:17:48* 作者:cutter_point*/#include"Global.cpp"extern int cutter_point;voi...
1. 死锁与解锁:#include <iostream>
#include <thread>
#include <mutex>usingnamespace std;//thread引用类型函数,模板,避免类型转换,尽量指针,引用
//锁住一个变量之后,尽快操作完解锁,不要再锁,否则互锁#define COUNT 100000
mutex g_mutex1, g_mutex2;//互斥量void add1(int *p1, int *p2)
{for (int i = 0; i < COUNT; i++){/*g_mutex1.lock();p1++;g_mutex2.lock();p2++;g_mutex1.unlock();g_mutex2.unlock();*/g_mu...
1// lib中的swap 2namespace std {3 template<typename T> 4void swap (T& a, T& b)5 {6 T temp(a);7 a = b;8 b = temp;9 }10}11 12// 缺点:需要赋值大量的数据,但是有的时候并不要复制如此多的内容 13class WidgetImpl {14public:15//... 16private:17int a, b, c;18 std::vector<double> v; // 可能有很多数据,以为复制时间很长19//... 20};21 22class Widget {23public:24 Wid...
1. 根据C++ GUI Qt4编程(第二版)整理2. 系统:centos7; Qt版本:5.5.13. 程序:layout.cpp#include <QApplication>
#include <QHBoxLayout>
#include <QSlider>
#include <QSpinBox>int main(int argc, char *argv[])
{QApplication app(argc, argv);QWidget *window = new QWidget;window->setWindowTitle("Enter your age");QSpinBox *spinBox = new QSpinBox;QSlider *slider = new QSlider(Qt::Horizontal);QObject::conn...
http://blog.sina.com.cn/s/blog_a9303fd901018ost.html 大部分内容转自:http://blog.csdn.net/codestinity/article/details/6877581 一、简单的例子首先通过一个简单的例子来熟悉C++ 的 try/catch/throw:1 #include<iostream.h> //包含头文件2 #include<stdlib.h>3 double fuc(double x, double y) //定义函数4 {5 if(y==0)6 {7 t...
刚才在写代码的时候 用到了一个静态变量 然后在别人地方直接使用的时候 也就是 NetWork::Flag = 0; 像是这样使用的时候一直提示 undefined reference to各种检查之后未果后来发现没有初始化 这么看的话 静态变量不初始化似乎不能使用? 初始化之后就好了 原文:https://www.cnblogs.com/cjdty/p/10666704.html
1 #include <cstdio>2 #include <string>3 #include <cstring>4 #include <iostream>5usingnamespace std;6 typedef longlong ll;7 ll num,k=10,ans;int t,calc,len;string str;char s[30];8ll get10(){9 ans=0,scanf("%s",s+1),len=strlen(s+1);
10for(int i=1;i<=len;i++)ans=ans*k+(s[i]>‘9‘?s[i]-‘A‘+10:s[i]-‘0‘);
11return ans;
12}
13void print(ll x){if(x)print(x/k),putchar(x%k<=9?x%k+‘0‘:x%k+‘A‘-10);}...
1、形参和实参:编译器并没有规定实参的求值顺序。类似下面的代码,其行为是未定义的:int i = 0;
printf("%d %d\n",++i,++i);2、变量的初始化:如果内置类型的变量,在定义时候没有初始化,那么它的值由定义的位置决定。全局变量会被默认初始化为0,局部变量将不被初始化。3、局部静态对象:在第一次经过变量定义的时候才初始化,到程序退出才销毁。局部静态对象默认初始化为0。4、函数的声明 又叫 函数原型,prototype。5、变量...