C++
文章平均质量分 60
onlyou2030
内心仰望理想的人都在埋头苦干!
展开
-
变量存储类型
Turbo C2.0支持四种变量存储类型。说明符如下: auto static extern register下面分别来介绍。 一、auto 仅在语句块内部使用,初始化可为任何表达式,其特点是当执行流程进入该语句块的时候初始化可为任何表达式。 二、static static称为静态变量。根据变量的类型可以分为静态局部变量原创 2015-06-25 14:56:56 · 352 阅读 · 0 评论 -
C++中max_element和min_element
函数原型:#include iterator max_element( iterator start, iterator end ); iterator max_element( iterator start, iterator end, BinPred p );用法:#include#原创 2015-08-04 23:32:45 · 663 阅读 · 0 评论 -
C++函数返回多个参数
如果一个函数需要返回多个参数,可以采用以下两种方法:第一种方法是将返回值作为写参数。#include #include using namespace std;void fun(int &a, char &b, string &c){ a = 1; b = 'b'; c = "test";}int main(){ int a; char b; string c;原创 2015-09-02 10:16:17 · 6509 阅读 · 1 评论 -
友元类 运算符重载 new结构体数组
1.友元类如果StockManagement类要访问Stock类中私有成员,Stock类可以将StockManagement类声明为自己的友元类,具体实现如下:class Stock{ friend class StockManagement; //define the friend class private: char tag[5]; int cost; lon原创 2015-09-09 17:02:59 · 468 阅读 · 0 评论 -
C++隐式类型转换
C++ primer 中有这么一句话:可以用单个实参来调用的构造函数定义了从形参类型到该类型的一个隐式转换。这么解释:比如有个类A的对象a的成员函数的参数应该是类A的对象,但是把一个别的类型B的对象b传进去了,而且这个对象b的类型恰好是A的单参数构造函数参数类型,这时系统就用这个b自作聪明的创建了一个类A的临时对象c,虽然c和a都是A类型,但是是不同的对象。这种隐式转换有很大风险,可以原创 2015-09-26 12:47:47 · 311 阅读 · 0 评论 -
VS带参数运行
一般,main函数可以带入口参数,该参数在执行程序时,可以随着命令行输入,比如在linux下./program para这样就可以将参数para传递给程序。但是在windows下的vs开发环境下,直接运行程序,显然没有输入参数的地方,当然也可以在dos下找到.exe执行文件,运行时在加上参数,这样显然有些麻烦。但是vs为我们提供了一个传递参数的地方。原创 2015-09-25 18:46:04 · 816 阅读 · 0 评论 -
list对象作为类的私有成员时分配内存
今天在做国外题目时,碰到了一个问题,就是LVList类的私有成员中包含list对象,如果直接声明对象,不分配内存的话,后面对其访问就会报错。最开始时,我是这样声明的:templateclass KVList{public: KVList(); size_t size() const; //return number of key-value const K& key(int原创 2015-10-18 23:42:24 · 420 阅读 · 0 评论 -
事件驱动仿真
#ifndef SIMULATE_H_#define SIMULATE_H_#include #include #include using namespace std;#define MAX 100//event classenum EventType{ Arrival, Departure }; //event typestruct Customer{ int原创 2015-08-26 21:56:25 · 1995 阅读 · 0 评论 -
Thread class
c++11提供了2个线程库来实现简单多线程。future库包含所有需要的类模板;thread库提供用于启动执行的并发线程的支持。本章介绍了线程类模板中的细节,并演示如何启动并同步线程。1.线程类Thread类定义了一个对象,它代表一个单独的执行线程。线程对象是可连接或不连接的。一个可连接对象表示执行了一个独特的线程ID实际线程。非可连接对象表示执行的潜在线索。在一个线程对象原创 2015-11-04 21:09:29 · 916 阅读 · 0 评论 -
<<重载
第一种方式:作为类外部函数 void display(ostream &); //display the string //ostream & operator<<(ostream &); };ostream & operatorvoid w1::CString::display(ostream & out){ out<<store;}ost原创 2015-09-19 19:54:03 · 276 阅读 · 0 评论 -
C++不初始化
今天看到一个不初始化造成的不确定后果,很奇怪,特记录下来:#include using namespace std; void a() { volatile int array[10]; //可以去掉 volatile for (int i = 0; i < 10; i++) array[i] = i; } vo原创 2015-11-09 18:30:16 · 361 阅读 · 0 评论 -
常犯的错误
1.结构体成员顺序发生变化引发的错误。 struct s{ int l; char* p;}; int main(int argc, char* argv[]){ struct s s1 = {4, "abcd"}; //使用struct s s1 = {.l = 4, .p = "abcd"};更好,不怕顺序发生变化 return 0;原创 2015-11-09 19:02:23 · 285 阅读 · 0 评论 -
关于指针的引用
今天在做任务时,需要将数据从文本中读出来,并且动态的存到二叉搜索树中,刚开始的做法如下:void StockTree::insertNode(StockNode *p,StockNode *newNode){ if(p==NULL) { StockNode *temp=new StockNode(newNode->getStock(),NULL,NULL); p=temp; }原创 2015-10-16 09:40:59 · 296 阅读 · 0 评论 -
strlen()和sizeof()函数
strlen计算不包括终止null字节的字符串长度,而sizeof则计算包括终止字符null字节的字符串长度。strlen获得的是实际大小,而sizeof获得的是初始化的大小。原创 2015-08-15 19:41:23 · 331 阅读 · 0 评论 -
C++获取数组大小
首先想到的是sizeof()函数但经过试验发现这个函数返回的是数组的字节数,不是元素个数 int a[5]; a[1] = 1; a[3] = 2; cout 这个就可以得到元素个数了。但是整型元素怎么只占4个字节啊?原创 2015-07-04 17:19:20 · 7574 阅读 · 0 评论 -
关于如何动态创建数组
int n1 = q - p + 1; //arr[p..q]的长度为n1 int n2 = r - q; //arr[q+1..r]的长度为n2 int *L = new int[n1 + 1]; int *R = new int[n2 + 1];这样就可以创建数组而不必规定数组大小。原创 2015-06-23 10:00:59 · 346 阅读 · 0 评论 -
二维数组做形参
可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以可以指定所有维数的大小,也可以省略第一维的大小说明,如: void Func(int array[3][10]); void Func(int array[][10]); 二者都是合法而且等价,但是不能把第二维或者更高维的大小省略,如下面的定义是不合法的: void Func转载 2015-07-15 11:46:45 · 2840 阅读 · 0 评论 -
字符串数字转为double
经常要用到将输入的字符串数字转为double,特写了一个函数,供以后直接调用。//string to doubledouble StringToDouble(char *str){ int i=0; int integer=0; //the integer part double decimals=0.0; //the dec原创 2015-07-29 12:29:34 · 1455 阅读 · 0 评论 -
C++重载输出操作符
说明:这里要声明成友元函数的原因是,为类重载运算符调用:DataInfo dataInfo;cout上面重载运算符dataInfovoid operator<<(ostream& out, const DataInfo& dataInfo) //重载输出操作符{ out << "姓名:" << dataInfo.name << " 电话:" << dataInfo.原创 2015-07-17 09:46:06 · 473 阅读 · 0 评论 -
vector创建数组及对应操作
一.创建一维数组vector a(size,initValue);也可以不进行初始化。vector a;其中size是数组的大小,initValue是初始值。此外还可以重新设置大小和初始值。a.resize(newSize,newValue);往创建的数组中插值有两种方法:1.insert函数iterator insert( iterator loc原创 2015-08-10 21:16:52 · 721 阅读 · 0 评论 -
C++读dat文件
编程实现简易的学生成绩管理系统。(1)文件score.dat中存放了30名学生的序号和6次考试成绩,请从该文件中读取数据;(2)计算每名学生的总分;(3)输出总分最高和最低的学生序号及分数;(4)根据输入的学生序号,输出该生各次考试成绩和平均成绩;各要求比较简单,我只实现读数据部分,将结果存在结构体中,也可以存在vector中。代码如下:#include #inclu原创 2015-07-31 21:51:30 · 20487 阅读 · 1 评论 -
STL中stack用法
stack的插入好说,主要是取出元素时,可以用stack.top()来赋值,然后用stack.pop()来删除栈顶元素。// stack::empty#include #include using namespace std;int main (){ stack mystack; int sum (0); for (int i=1;i<=10;i++)原创 2015-07-21 16:53:42 · 317 阅读 · 0 评论 -
C++读取屏幕输入
1.C++读取屏幕一行的多个字符串,字符串用空格隔开#include #include #include using namespace std;int main(){ stack str; cout<<"Please enter some strings separated by space! Q to quit!"<<endl; string原创 2015-07-21 16:56:13 · 3749 阅读 · 0 评论 -
vector用法
vector类称作向量类,它实现了动态数组,用于元素数量变化的对象数组。像数组一样,vector类也用从0开始的下标表示元素的位置;但和数组不同的是,当vector对象创建后,数组的元素个数会随着vector对象元素个数的增大和缩小而自动变化。 vector类常用的函数如下所示: 1.构造函数vector():创建一个空vectorvector(int转载 2015-08-02 15:58:08 · 266 阅读 · 0 评论 -
atoi函数和strtok函数
atoi函数:将字符串转换成整型数。(包含在头文件stdlib.h中)strtok函数:将一个字符串按一定的规则分成若干个子字符串。(包含在头文件string.h中)atoi用法比较简单,下面主要来说strtok函数的用法:char *strtok(char *str, const char *delim);功能:分解字符串为一组标记串。str为要分解的字符串,delim为分隔符字符串原创 2015-08-15 09:48:29 · 1100 阅读 · 0 评论 -
定义全局变量
定义全局变量时,以下面为例:一个工程有part.h part.cpp main.cpp三个文件其中后两个文件都包含前面的头文件,则不要在part.h中定义变量,这样会出现重复定义,较好的做法是定义全局变量。part.h中:extern int a;part.cpp中:int a;main.cpp中就不要在定义了.原创 2015-08-14 15:16:59 · 329 阅读 · 0 评论 -
typedef用法
1.常规变量类型定义例如:typedef unsigned char uchar描述:uchar等价于unsigned char类型定义 uchar c声明等于unsigned char c声明2.数组类型定义例如: typedef int array[2];描述: array等价于 int [2]定义; array a声明等价于int a[2]声明扩展: ty原创 2015-12-04 19:16:18 · 230 阅读 · 0 评论