学习中遇到的c++问题,持续更新
原文请訪问我的博客:http://xiaoshig.sinaapp.com/
向上取整
使用ceil函数。ceil(x)返回的是大于x的最小整数。如: ceil(2.5) = 3 ceil(-2.5) = -2sort排序头文件
#include <algorithm>
数组初始化总结
整型数组初始化://仅仅能赋值0,赋其它值用memset(a,要赋的值,sizeof(a));
char a[3][4]={0};
字符数组初始化:
int b[3][4]={0};
布尔型数组初始化:
bool c[5]={0};
结构体初始化:
struct instruction{ //定义结构体,存储指令
int head; //识别指令
int d;
int n; //指令附加内容
}pro[1000]={0}; //存储程序体,相当于RAM
初始化之后都会变成0。
(char数组变为\000,int数组变为0,bool数组变为false,这个样例里的结构体全部元素的每个成员值都为0)
sort()函数的使用
sort()和qsort()一样,都是对数组的指定部分排序。qsort()仅仅使用了快排。sort()使用了混合排序。相比之下,sort()更快一些。
sort()函数经常使用的有两种形式,两个參数的形式,和三个參数的形式。
1、两參数:sort(数组名。数组末地址); //比如:sort(a+1,a+n+1);就是对a[1]...a[n+1]进行排序。默认是升序排序。假设想改变排序顺序,须要另写一个比較函数
2、三參数:sort(数组名,数组末地址。比較函数);
比如:
bool cmp(const int a,const int b)
{
return a<b;
}
sort(a+1,a+10+1,cmp);
就是对a[1]...a[n+1]进行从大到小排序。
string类库
substr 方法
返回一个从指定位置開始的指定长度的子字符串。 stringvar.substr(start [開始的数, length ]) 參数 stringvar 必选项。
要提取子字符串的字符串文字或 String 对象。 start 必选项。
所需的子字符串的起始位置。
字符串中的第一个字符的索引为 0。 length 可选项。
在返回的子字符串中应包含的字符个数。 说明 假设 length 为 0 或负数。将返回一个空字符串。假设没有指定该參数,则子字符串将延续到 stringvar 的最后。
演示样例 以下的演示样例演示了substr 方法的使用方法。
<pre name="code" class="cpp">function SubstrDemo() { var s, ss; //声明变量。 var s = "The rain in Spain falls mainly in the plain."; ss = s.substr(12, 5); //获取子字符串。查找字符串a是否包括子串b。return(ss); //返回 "Spain"。
不是用strA.find(strB) > 0而是strA.find(strB) != string:npos
#include "stdafx.h" #include <iostream> #include <vector> #include <algorithm> using namespace std; int student_Score[] = { 50,80,93,23,66}; void pritit(int nScore) { cout<<nScore<<" "; } bool unPass(int nScore) { return nScore < 60; } bool Pass(int nScore) { return nScore >= 60; } int main(int argc, char* argv[]) { vector<int> v_score(student_Score,student_Score+sizeof(student_Score)/sizeof(int)); vector<int>::iterator index; //排序 sort(v_score.begin(),v_score.end()); //显示 for_each(v_score.begin(),v_score.end(),pritit); cout<<endl; //显示最小 index = min_element(v_score.begin(),v_score.end()); cout<<"最小分数 "<<*index<<endl; //显示最大 index = max_element(v_score.begin(),v_score.end()); cout<<"最大分数 "<<*index<<endl; //显示不低于60分的数量 cout<<"低于60的数量 " <<count_if(v_score.begin(),v_score.end(),unPass)<<endl; //高于60的数量 cout<<"高于60的数量 "<<count_if(v_score.begin(),v_score.end(),Pass)<<endl; //平均数 int sum = 0; for (index = v_score.begin(); index != v_score.end(); index++) { sum += *index; } cout<<"平均数 "<<sum / v_score.size() <<endl; return 0; }