【《Effective C++》笔记:II】教程文章相关的互联网学习教程文章

C++学习(四)入门篇——函数调用【代码】

程序清单2.5 ourfunc.cpp //ourfunc.cpp - - defining your own function #include <iostream> void simon(int);int main() {usingnamespace std;simon(3);cout << "Pick an integer:";int count;cin >> count;cin.get();simon(count);cout << "Done!" << endl;cin.get();return0; }void simon(int n) {usingnamespace std;cout << "Simon says touch your toes " << n << " times." << endl; }1.函数格式type functionname(argum...

[c++面试准备]--vector对象是如何增长的【代码】

参考资料:cpp primer 5th背景:为了支持快速的访问,vector/string将元素连续存储--每个元素都是紧挨着前一个元素存储。如果我们向vector/string中添加新的元素,会发生什么:由于连续存放的缘故,当没有多余的空间来容纳新的元素的时候,容器必须分配新的空间来保存已有的元素和新元素,将已有元素从旧位置移动到新空间中,然后添加新的元素,释放旧的空间。 vector不会对新添加的每一个元素都做上述操作,效率太慢。所以vector会...

C++模板:二分查找【代码】【图】

bool find(int x,int l,int r) {if(l>r)returnfalse;int mid=(l+r)/2;if(s[mid]==x)returntrue;elseif(s[mid]>x)return find(x,l,mid-1);elsereturn find(x,mid+1,r); }原文:http://www.cnblogs.com/forever97/p/3541029.html

C++ - 二分查找完整版(包括注意细节)【代码】

int getPos(vector<int> A, int n, int val) int left = 0;int right = n-1; int index = n; while(left <= right){int mid = (left+right)/2;if(A[mid] == val) { if(mid < index) index = mid; right = mid -1; }else if(A[mid] > val)right = mid-1;else if(A[mid] < val)left = mid+1;} if(index != n) return index; else return...

Linux C/C++调用shell命令后获取shell返回值【代码】

Linux C/C++调用shell命令后获取shell返回值项目中C/C++调用shell命令后,某系处理返回值的过程是以“临时文件”的方式进行;即shell命令执行后将返回值存放在临时文件(如temp.txt),C/C++程序再访问文件,获取shell的返回值。最经典的就是调用WiFi(iwlist wlan0 scan )扫描指令查询WiFi节点,然后解析获取WiFi数量、名称、信号强度、加密方式等信息。通过“临时文件”的方式交互数据,是比较简单、易用和易理解的方式,在多进...

C++11 多线程 future/promise简介【代码】

1. < future >头文件简介Classes std::future std::future_error std::packaged_task std::promise std::shared_futureFunctions std::async std::future_category2. std::future简单来说,std::future提供了一种访问异步操作结果的机制。从字面意思看,它表示未来。通常一个异步操作我们是不能马上就获取操作结果的,只能在未来某个时候获取。我们可以以同步等待的方式来获取结果,可以通过查询future的状态(future_statu...

C++实现Point类【图】

程序代码#include <iostream>using namespace std;class Point//点类 { public://使用初始化表初始化点类Point(double a = 0, double b = 0):x(a), y(b){}double getX();//得到x坐标double getY();//得到y坐标//重载<<实现点的坐标的输出friend ostream& operator<<(ostream &output, Point &p);protected:double x;//x坐标double y;//y坐标 };//得到x的值 double Point::getX() {return x; }//得到y的值 double Point::getY() {re...

效率c++总结 参照2011版

关于c++基本1、将c++视为语言联邦 它有4个层次:c、面向对象、泛型、stl库2、对于单纯常量,最好用const对象或enums替换#define enums为用户刻画了一组有范围的值3、对于形似函数的宏,用inline代替#define4、尽量、大胆地使用const,编译器强制实行bitwise constness(保证物理常量性),表现为在编译阶段检测有无非法的赋值语句,但编程应使用“逻辑常量性” mutable 关键字可以解决部分问题5、当const和non-const成员函数有...

第四次C++【代码】【图】

继承与派生一、什么是继承和派生所谓继承就是从先辈处得到属性和行为特征。类的继承,是新的类从已有类那里得到已有的特性。从另一个角度来看这个问题,从已有类产生新类的过程就是类的派生。类的继承与派生机制允许程序员在保持原有类特性的基础上,进行更具体、更详细的修改和扩充。由原有的类产生新类时,新类便包含了原有类特征,同时也可以加入自己所特有的新特性。原有的类称为基类或父类,产生的新类称为派生类或子类。 面向...

C++ allocator 自定义指南【代码】

闲话昨天培神在群里抱怨说自定义allocator遇到了奇怪的问题,然后选择了pmr,我表示很理解。allocator这个东西,出生时就伴随着设计错误和无用的抽象,C++03-14糊了这么久,甚至还加了新feature来兼容旧翔和糊新翔,结果C++17最终还是另立门派搞了个pmr。简单说,虽然allocator的concept说了很多东西,也有一些周边的concept比如allocator aware container和语言设施如allocator_traits的支持,allocator的自定义依然收到了极大的限...

C++ 文件复制【代码】

1 #include<iostream>2 #include<fstream>3 4void copy(char* src, char* dst);5int main()6{7usingnamespace std;8char src[50] = "E:/test/jdk-8u121-windows-x64.exe";9char dst[50] = "E:\\test\\jdk-8u121-windows-x64_bak.exe"; 10 copy(src, dst); 1112return0; 13} 1415void copy(char* src, char* dst) 16{ 17usingnamespace std; 18 ifstream in(src,ios::binary); 19 ofstream out(dst,ios::binary); 20if (...

搭建Ubuntu下c/c++编译环境【转】

1. 安装Ubuntu。2. 安装gcc 方法一: sudo apt-get install build-essential 安装完了可以执行 gcc--version的命令来查看版本,输出如下: gcc(GCC)4.2.3(Ubuntu4.2.3-2ubuntu7) Copyright(C)2007FreeSoftwareFoundation,Inc. 编译则使用Ubuntu gcc命令。要往下学习首先就得熟悉gcc命令的用法。 Ubuntu gcc命令提供了非常多的命令选项,但...

MATLAB Coder从MATLAB生成C/C++代码步骤

MATLAB Coder可以从MATLAB代码生成独立的、可读性强、可移植的C/C++代码。使用MATLAB Coder产生代码的3个步骤:准备用于产生代码的MATLAB算法;检查MATLAB代码的兼容性(有些matlab代码语句并不能生成c/c++代码);产生最终使用的源代码或MEX。利用MATLAB Coder生成c++代码,并在vs2013中验证:一个简单的例子,两数相乘:1、安装matlab2014a或者更新版本;2、简单生成一个foo.m文件;function c = foo(a, b) %#codegen%This funct...

C++ 多态【代码】【图】

C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数。 1:用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数; 2:存在虚函数的类都有一个一维的虚函数表叫做虚表,类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对...

C++中的const成员函数

数据成员的值反应了对象在程序运行某个时刻的状态。数据成员值的改变是由于对象处理了一条消息,往往是某个成员函数被调用。但是有的时候我们希望,成员函数仅仅是访问数据成员而不对其值进行修改。所以,对象的成员函数被分成了两类:1. 修改对象状态的成员函数;2. 获取对象状态的成员函数;而const 成员函数就是为第2个功能而设计。尽管,只要我们在成员函数里不修改对象数据成员的值就可以认为这是一个获取对象状态的成员函数,...