第一周学习内容报告
一.标准C++ string类
1.啥叫string函数?
string类是由头文件< string >支持的(注意,头文件< string.h >和< cstring >
支持对C风格字符串进行操纵的C库字符串函数,但不支持string类)。
string类包含大量的方法,其中包括了若干构造函数、用于将字符串赋给变量、合并字符串、比较字符串和访问各个元素的重载运算符以及用于在字符串中查找字符和子字符串的工具等。总之,string类包含的内容很多。
2.构造函数
3.String类输入
4.String函数
二.C++STL模板类vector list
1.什么是vector list?
Vector是动态数组,能够在末尾快速的插入与删除,可以直接访问任意元素。
List是数据结构的双向链表,它的内存空间可以不连续,通过指针来进行数据的访问,它可以高效的地在任意地方删除和插入
具体内容以代码的形式体现
#include<iostream>
#include<string>
using namespace std;
int main()
{
//构造名为str的空字符串
string str;
cout<<str<<endl;//检测为空
//为字符串赋值
string str1("i like");
cout<<str1<<endl;
//在字符串后面添加字符串 or s=str1+str2 字符串相加
str1=str1+" Baekhyun";
cout<<str1<<endl;
//将字符串str2初始化为str1,相当于复制
string str2(str1);
cout<<str2<<endl;
//复制C风格字符串
char a[] = "Taeyeon is beautiful!";
string s(a,21);
cout<<s<<endl;
//将字符串初始化为由10个A组成的字符串
string str3(10,'A');
cout<<str3<<endl;
//访问字符串前四个元素
string str4("Baekhyun is singer",4);
string str5("Baekhyun is singer",9,9);//访问从第五个开始往后的6个元素
cout<<str4<<" "<<str5<<endl;
//重载[]运算符
string str6("Baekhyun is singer");
cout<<str6[0]<<str6[1]<<str6[2]<<str6[3]<<endl;
//a.empty判断字符串是否为空,是返回1,否返回0
string str7,str8;
cout<<str7.empty()<<endl;
str8="hello world!";
cout<<str8.empty()<<endl;
}
运行结果为:
#include<iostream>
#include<string>
using namespace std;
int main()
{
//length()求字符串长度,size()求字符个数
cout<<"求串的长度和大小:\n";
string s("Do you like Baekhyun!!!!");
cout<<s.length()<<endl;
cout<<s.size()<<endl;
cout<<"\n";
//capasity()求容量,返回当前分配给字符串的内存块的大小
cout<<"求字符串的容量:\n";
cout<<s.capacity()<<endl;
cout<<"\n";
// reserve()让操作者能够请求内存块的最小长度,也就是将容量变大,但不能变小
cout<<"扩充字符串的容量:\n";
s.reserve(50);
cout<<s.capacity()<<endl;
cout<<"\n";
//resize()修改字符大小,注意*字符大小*,不改变容量大小
cout<<"修改容量:\n";
s.resize(20);
cout<<s.capacity()<<endl;
cout<<s.length()<<endl;
cout<<s.size()<<endl;
cout<<s<<endl;
cout<<"\n";
cout<<"输出/修改单个字符:\n";
cout<<s.at(1)<<endl;
s.at(1)='O';
cout<<s.c_str()<<endl;
cout<<"\n";
//c_str全输出
cout<<"全输出:\n";
string s1="Yes!!!";
cout<<s1.c_str();
cout<<"\n";
//insret()插入函数 0是起始位置下标,“ Answer ”是插入内容
cout<<"任意位置插入:\n";
s1.insert(0," Anawer: ");
cout<<s1<<endl;
cout<<"\n";
//append()在字符串末尾插入
cout<<"末尾插入:\n";
s.append(s1);
cout<<s<<endl;
cout<<"\n";
cout<<"指定输出字符串的那些:\n";
string s2;
s2.assign("Yes or Yes",4);
cout<<s2<<endl;
cout<<"\n";
//compare()若str1>str2,返回1,相等返回0,小于返回-1
cout<<"比较函数:\n";
string str1="Taeyeon";
string str2="Baekhyun";
cout<<str1.compare(str2)<<endl;
cout<<"\n";
cout<<"复制函数:\n";
char a[10]={0};
str1.copy(a,3,0);//把str1复制给a 3是复制个数,0是下标
cout<<a<<endl;
cout<<"\n";
//返回*字串第一个元素*的下标,没有找到返回-1
cout<<"查找函数:\n";
cout<<(int)s.find("Yes")<<endl;
cout<<(int)s.find(s1,2)<<endl;
cout<<"\n";
//返回*第一个被找到元素*下标,没有找到返回-1
cout<<"查找字符:\n";
cout<<(int)s.find('u')<<endl;
cout<<"\n";
//返回*字串*
cout<<"返回子串:\n";
cout<<s.substr(29,30);
cout<<"\n";
//erase()删除函数,replace替代函数
cout<<"删除部分子串:\n";
s.erase(18,8);
cout<<s<<endl;
cout<<"\n";
cout<<"最终结果为:\n";
s.replace(0,2,"To");
cout<<s<<endl;
}
运行结果为:
vector定义
#include<iostream>
#include<vector>
using namespace std;
struct point{
int x,y;
};
int main()
{
vector< int >a;//默认初始化,a为空
vector< int >b(a);//用a定义b
vector< int >a(100);//a有100个值为0的元素
vector< int >a(100,6);//a有100个值为6的元素
vector< string >a(10,"null");//10个值为null的元素;
vector< string >vec(10,"hello");//10个值为hello的元素
vector< string >b(a.begin(),a.end());//b是a的复制
vector<int>a[5];//二维数组 是动态的
vector< point >a;//a用来存坐标
}
#include<bits/stdc++.h>
#include<vector>
using namespace std;
int main()
{
vector<int>a;
a.push_back(456);//push_back()在尾部添加元素
a.push_back(457);
a.push_back(320);
cout<<"判断字符串是否为空:";
bool isEmpty=a.empty();
cout<<isEmpty<<endl;
cout<<"打印字符串的第一个元素:";
cout<<a[0]<<endl;
// a.insert(a.begin()+i,k),i表示下标,中间插入:在第i+1个元素前面插入k
cout<<"从字符串中间插入:";
a.insert(a.begin()+1,520);
cout<<"在第2个元素前插入520,输出四个元素:";
cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<" "<<a[3]<<endl;
cout<<"在字符串的尾部插入10个5"<<endl;
a.insert(a.end(),10,5);
cout<<a[3]<<" "<<a[4]<<" "<<a[5]<<endl;
//a.erase(a.begin()+i,a.begin()+j),(i,j都是下标)删除的是第i+1到第j个元素
cout<<"删除区间[0,1]的元素(即第一二个元素)后前两个元素为:";
a.erase(a.begin()+0,a.begin()+2);
cout<<a[0]<<" "<<a[1]<<endl;
//排序:从小到大排(基于快排) 5是下标
cout<<"将字符串的前5个元素排序:";
sort(a.begin(),a.begin()+5);
cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<" "<<a[3]<<" "<<a[4]<<endl;
cout<<"将字符串的前五个元素翻转:";
reverse(a.begin(),a.begin()+5);
cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<" "<<a[3]<<" "<<a[4]<<endl;
cout<<"清空数组,大小变为:";
a.clear();
cout<<a.size();
}
运行结果为: