65,210
社区成员
发帖
与我相关
我的任务
分享一、
C++的字符串类型:string
标准库string类
它支持字符串对象的各种操作
要包含头文件<stirng>
1.getline()函数可以将完整的一行输入数据读入到字符串中,读到换行符为止,且换行符被丢弃,无论这一行中是否有空格。
方法:
getline(cin,字符串名称);
cin是输入流对象
2.s.empty()函数判断string对象是否为空,返回值是bool类型;
3.
<cstring>头文件中对字符数组的处理:
char a[10];
strlen(a)返回值是字符数组的长度。
strcpy(a,b) 将字符数组b复制到a中。
4.
获取string类型对象的长度:
s.size();
5.
比较string对象:
相等代表他们1⃣️长度相同2⃣️包含的字符相同。
可以用关系运算符比较两个字符串对象,大小按照字典顺序定义且区分大小写字母。
6.
下标运算符可以访问string对象中指定位置的字符:
string对象s的下标范围是从0到s.size()-1;
#include<bits/stdc++.h>
using namespace std;
int main(){
sync_with_stdio(false);
const string hexdigits=“0123456789ABCDEF”;
cout<<“enter a number between 0 and 15:”<<endl;
string::size_type n;
cin>>n;
if(n<hexdigits.size())
cout<<“hex number is:”<<hexdigits[n]<<endl;
return 0;
}
7.
8.
9.
二、
另外我还知道一个小知识,写完int main()再在下一行写一个
sync_with_stdio(false);
可以加快cin>>的速度,在以后会非常实用。
三、
栈
是一种先进后出的数据结构,只能操作最顶端元素。
头文件<stack>
stack<int>s; 建立一个栈s,其内部元素类型是int。
s.push(a);将元素a压进栈。
s.pop();将栈顶元素弹出(移除)。
s.top();查询栈顶元素。
s.size();查询s中的元素个数。
s.empty();查询是否为空,返回值是bool型;
四、
队列 queue
先进先出的数据结构。
queue<int>q;建立一个队列,内部元素类型是int。
q.push(a); q.push(数据类型 a);
q.empty();
q.size();
q.pop();
q.front();查询队首元素
q.back();查询队尾元素
五、
向量 可变数组
vector
六、sort函数
包含在<algorithm>头文件中。
1.sort(num,num+5,cmp);
默认升序排列,a[0]到a[4]。
2.bool cmp(int a,int b>{
retrun a>b;
}//降序排列;
七、优先队列
头文件<queue>
定义:
priority_queue_<数据类型>变量名称;
priority_queue_<int>a;默认是最大顶堆;
八、去重unique
这个去重并非删除,是将重复的元素放到容器的末尾,返回值是去重之后的尾地址,
也可以说:返回值是指向最后一个元素的下一个元素的迭代器。
需要先进行排序,只能对有序数组。
1.unique(a,a+n);
对a数组的a[0]到a[n-1]去重
九、生成排列
头文件<algorithm>`
1.
bool next_permutation(begin,end);
改变区间内元素的排序,产生下一个排列。
2.
bool prev_permutation(begin,end);
产生前一个排列。
end为最后一个元素的下一个位置。
十、集合
头文件<set>
set和multiset会根据特定的排序准则,自动将元素排序,两者的不同在于multiset可以允许元素重复。
1.定义
set<int>ds;
2.插入元素
ds.insert(x);
如果这个元素已经存在,则什么都不干。
3.删除元素
ds.erase(x);
删除元素x,如果不存在,则什么都不干。
ds.erase(it);
删除元素所在地址为it的元素。
4.
ds.end();
返回集合中最后一个元素的下一个元素的地址。
5.
ds.find(x);
查询x在集合中的地址,如果这个数不存在,则返回ds.end()。
6.
ds.lower_bound(x);
查询不小于x的最小的书在集合中的地址,如果这个数不存在,则返回ds.end()。
ds.upper_bound(x);
查询大于x的最小的数在集合中的地址,如果这个数不存在,则返回ds.end()。
7.
ds.empty();
ds.size();
学习感悟:
这开始的部分理解起来比较简单,但是脱离实践的纸上谈兵让我还是不能如鱼得水的熟练运用。
这是正式开始学习ICPC的第一周,感觉还是没能很快的进入到准备比赛的状态,下个周我绝对拿出一个学习状态不同于今日的自己。
悟以往之不谏,知来者之可追。
支持,推荐图形界面编程:https://blog.csdn.net/u010165006/article/details/122217326 多图、实例、书籍
————————————————————





