目录
初学C++
学习c++明显感觉比c语言更为方便,主要原因是c++中库函数更多,在语言中需要很长一段代码才能实现的功能在c++中只需要调用简单的函数即可。
c++基本格式
#include <iostream>
using namespace std;
int main()
{
string a,b;//定义字符串
cin>>a;//输入a,无法读入空格
getline(cin,b);//读入一行,可以读入空格
cout<<a;//输出a
cout<<endl;//换行
cout<<b;//输出b
return 0;
}
下面是输入输出样例
输入:高大机灵 sd sds
输出:高大机灵
sd sds
有关STL容器
STL容器包括顺序式容器和关联式容器。(由于概念性较强,想深入了解的朋友可以自行百度)。
C++ 中的string
就目前我所看string是c++中重要的一环,因为在第一周的学习中反复用到了string
使用string库函数时需要先输入string头文件
#include <iostream>
#include <string>//需增加这一步
using namespace std;
int main()
{
return 0;
}
下面是这周我所用到的string库函数:
size() 求字符串的长度
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a;
cin>>a;
int n=a.size();
cout<<n;
return 0;
}
下面是输入输出样例
输入:gyh
输出:3
at()修改字符串中指定下标为某个字符(功能之一)
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a;
cin>>a;
a.at(2)='0';
cout<<a;
return 0;
}
下面是输入输出样例
输入:123
输出:120
erase(a,b)删除从下标为a后的b个字符(功能之一)
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a;
cin>>a;
a.erase(1,2);
cout<<a;
return 0;
}
下面是输入输出样例
输入:123
输出:1
find() 顺序在一个字符串中查找另一个字符串(功能之一)
如果没找到就返回string::npos
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a,b("123");
cin>>a;
int n=0;
if(a.find(b)!=string::npos)
n=1;
cout<<n;
return 0;
}
下面是输入输出样例
输入:123
输出:1
输入:12
输出:0
reverse()字符串反转函数
由于reverse 是后续新加的函数,所以头文件将string更改为algorithm
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
string a;
cin>>a;
reverse(a.begin(),a.end());
cout<<a;
return 0;
}
下面是输入输出样例
输入:123
输出:321
sort排序函数用法
头文件#include
sort有三个参数(第三个参数可以不写)
1、第一个参数是要排的数组的起始地址;
2、第二个参数是要排的结束地址(或者是最后一位要排的地址);
3、第三个参数是排序的方式,可以是从小到大也可以是从大到小,还可以不写第三个参数,此时的默认方法是从小到大的排序;
两个参数用法
#include <iostream>
#include <algorithm>
int main()
{
int a[20]={2,4,1,23,5,76,0,43,24,65},i;
for(i=0;i<20;i++)
cout<<a[i]<<endl;
sort(a,a+20);
for(i=0;i<20;i++)
cout<<a[i]<<endl;
return 0;
}
三个参数
// sort algorithm example
#include <iostream> // std::cout
#include <algorithm> // std::sort
#include <vector> // std::vector
bool myfunction (int i,int j) { return (i<j); }//升序排列
bool myfunction2 (int i,int j) { return (i>j); }//降序排列
struct myclass {
bool operator() (int i,int j) { return (i<j);}
} myobject;
int main () {
int myints[8] = {32,71,12,45,26,80,53,33};
std::vector<int> myvector (myints, myints+8); // 32 71 12 45 26 80 53 33
// using default comparison (operator <):
std::sort (myvector.begin(), myvector.begin()+4); //(12 32 45 71)26 80 53 33
// using function as comp
std::sort (myvector.begin()+4, myvector.end(), myfunction); // 12 32 45 71(26 33 53 80)
//std::sort (myints,myints+8,myfunction);不用vector的用法
// using object as comp
std::sort (myvector.begin(), myvector.end(), myobject); //(12 26 32 33 45 53 71 80)
// print out content:
std::cout << "myvector contains:";
for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)//输出
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
}
string 使用反向迭代器来完成逆序排列
#include <iostream>
using namespace std;
int main()
{
string str("cvicses");
string s(str.rbegin(),str.rend());
cout << s <<endl;
return 0;
}
//输出:sescivc