C++学习
dingzhiq1
这个作者很懒,什么都没留下…
展开
-
Pentagonal数列问题——2.2
问题:练习2.2pentagonal数列的求值公式是P(n)=n(3n-1)/2,借此产生1,5,12,22,35等元素值。试定义一个函数,利用上述公式,将产生的元素放到用户传入的vector中,元素个数由用户指定。请检查元素个数的有效性。接下来编写第二个函数,能够将给定的vector的所有元素一一打印出来。此函数的第二参数接受一个字符串,便是存放在vector内的数列的类型,最后再写一个main(原创 2016-10-08 20:27:57 · 1400 阅读 · 0 评论 -
递归与迭代
ail recursion is well-described in previous answers, but I think an example in action would help to illustrate the concept.Consider a simple function that adds the first N integers. (e.g. sum(5)原创 2016-12-08 10:46:53 · 376 阅读 · 0 评论 -
运算符重载详解
1.运算符重载定义:C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。运算符重载的实质是函数重载,它提供了C++的可扩展性,也是C++最吸引人的特性之一。 运算符重载是通过创建运算符函数实现的,运算符函数定义了重载的运算符将转载 2016-11-21 20:31:16 · 412 阅读 · 0 评论 -
防卫式声明
标准格式:在头文件中写:#ifndef -XXX-#define -XXX-.......#endif通过阅读 GeekBand c++学习笔记——防卫式声明的背后,发现编译器对头文件进行了以下预处理:编译器将处理掉所有注释,以空格代替;删除#define,展开所有宏定义;处理条件编译指令#if、#ifdef、#elif、#else、#endif;原创 2016-11-13 13:44:04 · 937 阅读 · 0 评论 -
big three三大函数:拷贝构造拷贝赋值析构函数
析构函数:析构函数的调用: 在这个对象的作用域最后..比如你在main里面声明了一个类A..那么~A()会在main结束时调用..如果在自定义的函数f()里面声明了一个A 函数f结束的时候就会调用~A()或者你delete 指向A的指针..或者显式的调用析构函数追问也就是说在包含该对象的函数的末尾就会调用析构函数喽?原创 2016-11-16 11:49:38 · 306 阅读 · 0 评论 -
C++sort 函数用法
MSDN中的定义:templatevoid sort(RanIt first, RanIt last); //--> 1)templatevoid sort(RanIt first, RanIt last, Pred pr); //--> 2)头文件:#include using namespace std;1.默认的sort函数是按升序排。对应于1)转载 2016-10-30 21:41:07 · 294 阅读 · 0 评论 -
为什么判断 std::vector 是否为空时,用 if(0==vec.size()) 提示效率低,但用 if (vec.empty()) 正常?
为什么判断 std::vector 是否为空时,用 if(0==vec.size()) 提示效率低,但用 if (vec.empty()) 正常?修改编译器错误:Possible inefficient checking for 'vecAttrValue' emptiness修改举报添加评论 分享 • 邀请回答默认排序按转载 2016-10-19 21:15:14 · 5233 阅读 · 0 评论 -
随笔
C++编程习惯中,双目运算符一般在在符号两边都留一个空格,而单目运算符就不用a = 1;a++原创 2016-10-20 11:27:07 · 256 阅读 · 0 评论 -
引用和指针,查C++primer这本书直接查后面,像英语字典一样的方法,首字母。
引用:essential C++ P215bool pentagonal_elem(int pos,int &seq)int main(){pentagonal_elem(8,elem)}这里的&就是应用,而不是求地址,elem和seq是等价的,&seq简单的理解就是指向了elem的原始地址,seq=elem,所以在主函数中可以直接打印elem的值,即使子函数已经结束调原创 2016-10-11 23:15:42 · 290 阅读 · 0 评论 -
C++中string和char的区别以及直接初始化和拷贝初始化
string和char的区别‘\0’是c/c++语言中的字符串结束符,在ASCII字符集中对应空字符NULL。使用string类,必须要在头文件写明#include,使用string会在字符串的末尾自动加入一个\0,而且字符串使用双引号,char不在末尾自动加0,一般用单引号——char a = 'A';string s1("hello");原创 2016-10-27 22:01:22 · 1736 阅读 · 0 评论 -
function object 优势
既然用函数对象与调用普通函数有相同的效果,为什么还有搞这么麻烦定义一个类来使用函数对象?主要在于函数对象有以下的优势: 1. 函数对象可以有自己的状态。我们可以在类中定义状态变量,这样一个函数对象在多次的调用中可以共享这个状态。但是函数调用没这种优势,除非它使用全局变量来保存状态。呃,面向对象编程。。。全局变量。。。。 2. 函数对象有自己特有的类型,而普通转载 2016-10-25 12:01:42 · 371 阅读 · 0 评论 -
stack栈的用法
#include#include#include#includeusing namespace std;int main(){ stack s; s.push(1); // void push(T t);压栈存入数据 s.push(2); s.push(3); int result = s.top(); // T top();只输出第一个顶部数据,不弹栈 int resu原创 2016-11-03 21:04:17 · 288 阅读 · 0 评论 -
stack(栈)几个函数的用法
#include#include#include#includeusing namespace std;int main(){ stack s; s.push(1); // void push(T t);压栈存入数据 s.push(2); s.push(3); int result = s.top(); // T top();只输出第一个顶部数据,不弹栈 int resu原创 2016-11-03 20:54:31 · 4115 阅读 · 0 评论 -
C++中静态变量static使用说明
平常的子函数调用中,会分配一个栈给函数的变量,当这个子函数结束调用的时候,这块栈就会释放。而使用static变量,那么该变量就会存储在一块静态变量区,子函数结束调用的时候,仍然可以调用静态变量,它的值不会消失,直到所有的函数都结束了,静态变量所占用的空间会一直保留到整个程序的结束选C。原创 2016-10-10 21:52:35 · 362 阅读 · 0 评论 -
const变量注意事项
一个非const变量可以向一个const变量进行赋值,而反过来的话就会出错。//correct using way;function(const vector& vec,int pos){函数体;}int main(){vector vec=[1,2,3,4];function(vec);}// error using way;原创 2016-10-10 21:33:30 · 271 阅读 · 0 评论 -
二维向量
与数组相同, 向量也可以增加维数, 例如声明一个m*n大小的二维向量方式可以像如下形式: vector > b(10, vector(5)); //创建一个10*5的int型二维向量 在这里, 实际上创建的是一个向量中元素为向量的向量。同样可以根据一维向量的相关特性对二维向量进行操作。#include #include using name转载 2016-12-21 18:39:06 · 3820 阅读 · 0 评论