C++ - 技术教程文章

玩转C++运算符重载

bochs调试的有些命令根据版本好像有变化,我在ubuntu下安装了bochs-2.4.6,发现和bochs-2.3.6命令出现区别,在2.3。6版本支持dump_cpu、info r等命令,在我安装的2.4.6版本中不支持这两个命令,后面在使用bochs的过程中会陆续总结一些2.4.6支持的命令,最简单的方法是通过help来获取,下面先记录一些常用的:r 查看通用寄存器sreg 查看段寄存器(IDTR被归到这里)creg 查看系统寄存器(CR0等)x 查看内存(线性地址)xp 查看内存(物理...

Name Mangling and extern “C” in C++【代码】

原文链接:http://www.geeksforgeeks.org/extern-c-in-c/C++ supports function overloading, i.e., there can be more than one functions with same name and differences in parameters. How does C++ compiler distinguishes between different functions when it generates object code – it changes names by adding information about arguments. This technique of adding additional information to function names is c...

c++ 库函数cmath

cmath中常用库函数:int abs(int i);//返回整型参数i的绝对值double fabs(double x);//返回双精度参数x的绝对值long labs(long n);//返回长整型参数n的绝对值double exp(double x);//返回指数函数e^x的值double log(double x);//返回logex的值,如果要求其他的,利用换底公式计算 double log10(double x) 返回log10x的值double pow(double x,double y) 返回x^y的值double pow10(int p) 返回10^p的值double sqrt(double x) 返回+√x...

软件工程随堂小作业——随机四则运算(C++)【图】

一、设计思路: 1.程序的主体部分是循环输出,次数即题目数目由用户输入; 2.三个整型变量+rand函数来实现随机数四则运算,一个变量代表加减乘除,另外两个用作运算数; 3.用户体验:题目分三列,排列整洁间距适中,并且不会显示除数为0的情况。 由于一个寒假没怎么接触编程,对我来说最大的困难就是不清楚rand函数的用法以及其所在的头文件。基本功能实现之后,我又调整了一下页面。添加了srand((unsigned)time(NULL)); 。因...

《C++编程思想》(第二版)第2章 C++中的C(笔记、习题及答案)(二)【图】

<span style="font-size:18px;"><span style="font-size:18px;">#include <iostream> #include <string> using namespace std;void stringRef(string& s) {s += " come blow"; }void stringPtr(string* p) {p->append(" your horn"); }int main() {string s = "Little Boy Blue";stringRef(s);stringPtr(&s);cout << s << endl; }</span></span><span style="font-size:18px;"><span style="font-size:18px;">#include <iostrea...

C++ Win32控制台应用程序捕捉关闭事件

#include#includebool ctrlhandler( DWORD fdwctrltype ){ switch( fdwctrltype ) { // handle the ctrl-c signal. case CTRL_C_EVENT: printf( "ctrl-c event\n\n" ); return( true ); // ctrl-close: confirm that the user wants to exit. case CTRL_CLOSE_EVENT: printf( "ctrl-close event\n\n" ); return( true ); // pass other signals to the next handler. case CT...

C++ 连接Oracle

下面是一个ADO方式连接Oracle的小程序部分代码......首先是Oracle的配置、在Oracle的安装路径下找到:Oracle\network\ADMIN\tnsnames.ora文件、配置一下连接配置 [plain] view plain copyBOSS = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = xx.xx.xx.xx)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = boss) ) ) 新建一个头文件、名为CDBOperation.h: [cp...

【转】C++11 标准新特性:Defaulted 和 Deleted 函数【代码】

原文链接http://www.ibm.com/developerworks/cn/aix/library/1212_lufang_c11new/本文将介绍 C++11 标准的两个新特性:defaulted 和 deleted 函数。对于 defaulted 函数,编译器会为其自动生成默认的函数定义体,从而获得更高的代码执行效率,也可免除程序员手动定义该函数的工作量。对于 deleted 函数, 编译器会对其禁用,从而避免某些非法的函数调用或者类型转换,从而提高代码的安全性。本文将通过代码示例详细阐述 defaulted ...

c++实验3类和对象【代码】【图】

实 验 3:part 1:验证 part 2:graph#include <iostream> #include "graph.h"usingnamespace std;int main() {Graph graph1(‘*‘,5);graph1.draw();system("pause");system("cls");Graph graph2(‘$‘,7);graph2.draw();system("pause");return0; } main.cpp// 类graph的实现 #include "graph.h" #include <iostream> usingnamespace std;// 带参数的构造函数的实现 Graph::Graph(char ch, int n): symbol(ch), size(n) { }//...

C++成员权限控制(总结)【代码】

1) 前言在我学习C++的过程中,类中成员的权限控制一直是比较头疼的一个点,一会public,一会又private,还有protected,再加点继承,而且又有公有继承、私有继承,保护继承,所以感觉会比较乱。后来不断学习过程中,慢慢理顺了它们的关系,稍微分类总结一下,在这个问题上基本上就没再栽过跟头。如有笔误,希望大神指点一下! 2 )C++的水平权限控制首先解释几个特定词,下面要用到:水平权限:在一个类中,成员的权限控制,就是类...

C++中头文件与源文件的作用详解【代码】

一、C++ 编译模式通常,在一个 C++ 程序中,只包含两类文件―― .cpp 文件和 .h 文件。其中,.cpp 文件被称作 C++ 源文件,里面放的都是 C++ 的源代码;而 .h 文件则被称作 C++ 头文件,里面放的也是 C++ 的源代码。C++ 语言支持"分别编译"(separatecompilation)。也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的 .cpp 文件里。.cpp 文件里的东西都是相对独立的,在编译(compile)时不需要与其他文件互通,只需...

c++之你真的了解vector的erase吗(网上大多都是错的)【代码】【图】

以下针对vector容器,编译环境为linux qt 4.7篇幅较长,耐心看完,有错误欢迎指出erase的定义删除容器内元素erase的使用先来看一下常用的写法 第一种 #include <iostream> #include <vector> using namespace std;int main() {vector<int> test{1,2,3};for(vector<int>::iterator test_iterator = test.begin(); test_iterator != test.end(); test_iterator++){if(*test_iterator == 2) {test.erase(test_iterator);}}for(vecto...

转 值得推荐的C/C++框架和库

值得学习的C语言开源项目- 1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/~cz210552/webbench.html- 2. Tinyhttpdtinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代...

Linux C/C++时间字符串与time_t之间的转换方法(转)

原文:http://www.cnblogs.com/zhangzl/p/7525240.html

c++中关于用stringstream进行的类型转化【代码】

1.将int转化成string类型#include <iostream> #include <sstream> usingnamespace std; int main() {stringstream ss;string s;int i=1234;ss<<i;ss>>s;cout<<s<<endl;return0; }2.将string类型转化成int类型#include <iostream> #include <sstream> usingnamespace std; int main() {stringstream ss;string s="1234";int i;ss<<s;ss>>i;cout<<i<<endl;return0; } 原文:http://www.cnblogs.com/suppercobweb/p/6808908.html

C++ delete掉的是new出的堆区内存,无法delete掉栈区的内存

直接上代码感受一下:#include <iostream>using namespace std;int main(){ int a=3; int* p1=&a; int* p2=new int(8); cout<<a<<‘ ‘<<*p1<<‘ ‘<<p1<<‘ ‘<<*p2<<‘ ‘<<p2<<endl; delete p1; delete p2; cout<<a<<‘ ‘<<*p1<<‘ ‘<<p1<<‘ ‘<<*p2<<‘ ‘<<p2<<endl; return 0;} 输出结果:3 3 0x28fef4 8 0x7318703 3 0x28fef4 22 0x731870 由此可见结论如题所示。原文:http://www.cnbl...

C++调用shell

1、直接采用system()2、popenhttp://www.cnblogs.com/xitang/p/4288808.html原文:http://www.cnblogs.com/hzijone/p/5446016.html

C++关联容器综合应用:TextQuery小程序【代码】【图】

本文介绍C++关联容器综合应用:TextQuery小程序(源自C++ Primer)。关于关联容器的概念及介绍,请参考园子里这篇博文:http://www.cnblogs.com/cy568searchx/archive/2012/10/08/2715306.html 1 #include<iostream>2 #include<fstream>3 #include<sstream>4 #include<string>5 #include<map>6 #include<vector>7 #include<set>8usingnamespace std;9//文本查询程序 10class TextQuery11{12public:13 typedef vector<string>:...

(基础篇 04) C++ base64 编解码原理及实现【代码】【图】

Base64原理Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法。由于 2^6 = 64,所以每 6 个比特为一个单元,对应某个可打印字符。3 个字节有 24 个比特,对应于 4 个 Base64 单元,即 3 个字节可由 4 个可打印字符来表示。它可用来作为电子邮件的传输编码。在 Base64 中的可打印字符包括字母 A-Z、a-z、数字 0-9 和 +, /。Base64 常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据,包括 MIME 的电子邮...

c++学习笔记—单链表基本操作的实现【图】

用c++语言实现的单链表基本操作,包括单链表的创建(包括头插法和尾插法建表)、结点的查找、删除、排序、打印输出、逆置、链表销毁等基本操作。IDE:vs2013具体实现代码如下: [cpp] view plaincopy #include "stdafx.h" #include <malloc.h> #include <iostream> using namespace std; typedef struct Lnode { int data; struct Lnode *next; }*node; node head_creat() //头插法建立单链表 { node hea...

C++ 零散知识点速记 -- <深入探索C++对象模型> 读书笔记【代码】

错误认知没有任何构造函数的时候, 编译器总会生成默认构造函数编译器仅在必要的时候生成默认构造函数 析构函数同理条件 : 有带有默认构造函数的member有带有默认构造函数的base class有virtual function有virtual inherit任何对象都带有vptr / 可以对任何对象指针进行 dynamic_cast 操作只有对象具有 多态 属性的时候 , 才具有 vptr , 才可以对其指针进行 dynamic_cast .对一个没有多态 属性的指针进行dynamic_cast会导致编译器报...

C++设计实现算法时易犯错误

1.未初始化指针未初始化为NULL,造成判断条件出错数值未初始化为0,造成数组超界,内存泄漏 2.long long输入时lld or I64d写成d一定出错 3.gcc编译报错:程序中有游离的‘\357’‘\273’‘\277’等感谢http://www.cnblogs.com/lidp/archive/2009/06/17/1697886.html 造成的原因主要有两个:1. 程序(*.c,*.h)中使用了中文的标点符号(全角),比如;,},+。改成英文的标点半角符号就行了。甚至有时候空格也会出现类似错误,删...

C++string中find,find_first_of和find_last_of的用法【代码】【图】

1.findstr.find(str1)说明:从前向后在str中找到str1,并返回其索引值,否则返回-12.find_first_ofstr.find_first_of(str1)说明:从前向后在str中找到str1,并返回其索引值,否则返回-13.find_last_ofstr.find_last_of(str1)说明:从后向前在str中找到str1,并返回其从后向前的索引值,否则返回-1#include<iostream> using namespace std;int main(void) { string s = "一蓑烟雨任平生。";int len = s.size();int count...

c++基本语法【代码】

此文主要针对有c语言基础的人。1. 基本语法对象 - 对象具有状态和行为。例如:一只狗的状态 - 颜色、名称、品种,行为 - 摇动、叫唤、吃。对象是类的实例。类 - 类可以定义为描述对象行为/状态的模板/蓝图。方法 - 从基本上说,一个方法表示一种行为。一个类可以包含多个方法。可以在方法中写入逻辑、操作数据以及执行所有的动作。即时变量 - 每个对象都有其独特的即时变量。对象的状态是由这些即时变量的值创建的。 2. 数据类型基...

POJ 2503 Babelfish (c++)(map容器)【代码】

题目大意就是给两个单词,前面个单词是后面个单词的翻译,也就是说存在着一种由键到值的映射关系,以输入空行为标志结束录入的对应关系,之后输入单词输出对应翻译。所以此题可以用c++的map容器建立对应关系来解决。 代码如下: 1 #include<iostream>2 #include<map>3 #include<cstdio>4 #include<cstring>5usingnamespace std;6int main(){7char str1[35] ;8char key[35] , value[35] ;9 map<string , string> map_ ; 10while...

C++并发编程学习笔记<2> 线程管理

线程管理 基本线程管理 启动一个线程 <1>最简单的一种类型void do_some_work();std::thread my_thread(do_some_work); <2>函数对象的形式#include<iostream> #include<thread> using namespace std;class Say_hello { public:void operator()(){cout<<"hello";} };int main() {Say_hello hello;std::thread t(hello);t.join();return 0; } 一旦开启一个线程,你需要明确地决定是否要等它结束 (通过join()函数 ),或让它自己后台...

数据结构-红黑树(Red-Black Tree)的C++实现模板【代码】

红黑树的实现还真不简单,各种染色旋转足足折腾了笔者几天。。 不过收获也是巨大的。笔者现在终于明白为啥二叉搜索树这么重要了,确实很有用。 下面上代码。 细心的朋友可能会觉得似乎少了那么几个接口,没错,因为 Precessor(求前驱) / Successor(求后继) / getMaximum (求树中最大值)/ getMinimum(求树中最小值)/ Inorder Traversal(中序遍历)/ Postorder Traversal(后序遍历) 这些操作都可以直接用笔者二叉...

c++模板元编程【代码】

范例:// 主模板 template<int N> struct Fib {enum { Result = Fib<N-1>::Result + Fib<N-2>::Result }; };// 完全特化版 template <> struct Fib<1> {enum { Result = 1 }; };// 完全特化版 template <> struct Fib<0> {enum { Result = 0 }; };int main() {int i = Fib<10>::Result;// std::cout << i << std::endl; }主要思想利用模板特化机制实现编译期条件选择结构,利用递归模板实现编译期循环结构,模板元程序则由编译器在...

c++(vector 开辟的空间的优化)【代码】

c++(vector 开辟的空间的优化)若提前知道大概需要开辟的空间这样写会优化代码void test01() {vector<int> v;int *p = NULL;//设置预留空间v.reserve(100000);int num = 0;for (int i = 0; i < 100000; ++i){v.push_back(i);if(p!=&v[0]){p = &v[0];num++;}}cout << num << endl;//开辟100000个数据用了多少次 } 原文:https://www.cnblogs.com/lodger47/p/14709452.html

C++实现KDTree【代码】【图】

简介??k-d树(k-dimensional),是一种分割k维数据空间的数据结构(对数据点在k维空间中划分的一种数据结构),主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索)。举例 ??上图就是一颗kdtree,可以看出kdtree是二叉搜索树的变种。 ??kdtree的性质:kdtree具有平衡的特质,两树叶的高度差不超过1。(树越平衡代表着分割得越平均,搜索的时间越少)数据只存放在叶子结点,而根结点和中间结点存放一些空间划分信息(例如划...