【刷题笔记1】

笔记1

 string s;
    while(cin>>s);
    cout<<s.length()<<endl;

输入为hello nowcoder时,输出为8 (nowcoder的长度)

2.字符串的输入(有空格)

 string a;
    getline(cin, a);
    cout<<a<<endl;

输入为ABCabc a
输出为ABCabc a
否则,就用一般性的cin>>a;cout<

3.字符与字符串的熟悉巩固

string a1;
a1={'a','b','c'};  //等效于string a1={"abc"};
char a2=a1[1]//索引的形式
cout<<a1<<endl;//输出结果为abc



char b=66;
cout<<b<<endl;//输出结果为B
cout<<b-0<<endl;//输出结果为66


char b=66;
cout<<b<<endl;//输出结果为66

char b[]="student"  //这个叫字数组

补充:string类的使用方法

string s;
string s2(s1);//由s1复制构造s2
s.size();s.length();s.empty();
s2=s2+s1;//s1追加到s2后面
s2.append(s1);
s.substr(idx,len);截取字符串,idx下标,长度为len
s.erase(idx,len)//删除从idx开始的最多len个字符

4.排序函数sort(first,last)
好像都是索引到下一个位置(即:超出数组、字符串的范围)
注意:map会对内容自动排序。 unordered_map就是胡乱排序的。

//#include (要添加头文件)
 int a[10] = {9, 6, 3, 8, 5, 2, 7, 4, 1, 0};
    sort(a, a + 10);  // 10为元素个数

//字符串排序
   string a1;
   cin>>a1;
   sort(a1.begin(),a1.end());   //string是比较标准的
   cout<<a1;
  
//向量排序跟字符串一样
	vector<string>a2;
    while(cin>>a1)
    a2.push_back(a1);//写入数据
    sort(a2.begin(),a2.end());


没有第三个参数,默认升序。
如果降序排序:

//#include (要添加头文件)
sort(a, a + 10, greater<int>());  // 10为元素个数

补充:稳定排序算法(stable_sort),保证相同字母在排序后的先后次序不变(不区分大小写)

vector<char>b1;
stable_sort( b1.begin(), b1.end() ,  comp);


bool comp(char a,char b)
{
    if (a >= 'A' && a <= 'Z')
    {
        a += 32;
    }
    if (b >= 'A' && b <= 'Z')
    {
        b += 32;
    }
     
    return a < b;//这是按照市
}

5.合并键值对(map的使用)
unordered_map随意排序
map是标准排序的

//#include (要添加头文件)
  map <int,int> m;  //定义
   cin>>n;
   for (int i=0;i<n;i++)
   {
    cin>>x>>y;  //赋值
    m[x]+=y;     //合并
   }
   for(map<int,int>::iterator it=m.begin();it!=m.end();it++)
   {
    cout<<it->first<<" "<<it->second<<endl;//二维的迭代器访问方式为first、second。一维的好像直接*it就行?
   }

6.stack(堆栈)的使用

定义: stack<数据类型> 容器名
常用函数:
empty() //判断堆栈是否为空
pop() //弹出堆栈顶部的元素
push() //向堆栈顶部添加元素
size() //返回堆栈中元素的个数
top() //返回堆栈顶部的元素

#include   //头文件

int main() {
 string a;
 stack<string>s;   //定义堆栈的形式
 while(cin>>a)     //控制输入
 {    s.push(a);   }    //压栈

 while(!s.empty())    //判断非空
 {    cout<<s.top()<<" ";    //顶部元素
      s.pop();                     //循环弹出堆栈顶部元素
 }
}

  1. 向量(vector)的使用
    定义: vector<数据类型> 容器名
vector<string>a1(n);
	int n;
	cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>a1[i];  //给容器赋值
    }
    sort(a1.begin(),a1.end());  //排序。begin/end 都是容器的常规操作

    for(int i=0;i<n;i++)
    cout<<a1[i]<<endl;

你可能感兴趣的:(笔记,笔记,c++)