stack和string和sort的初次理解

本文探讨了C++中字符串(string)数据类型的特性与使用方法,包括初始化、操作与内置函数,以及栈(stack)的基本概念和应用实例,如括号匹配问题。同时介绍了排序函数sort的使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

string就我理解是一种定义字符数组的数据类型:
可以直接string a;
也可以string b[100];//字符串数组
当做一个字符数组使用,而且有着比字符数组更加简便的使用方法,可以直接用于string类的比较复制连接,当然也可以输出、改变、比较一个字符串中的某个字符用法跟数组相同;
例如

#include <iostream>

using namespace std;

int main()
{
    string a;
    cin>>a;//a=abc
    for(int i=0;i<3;i++)
    cout<<a[i];
    //输出结果就是abc
    cout<<a;
    //也可以像字符数组哪样整体输出结果也是abc
    return 0;
}

那连接就是直接相加,也可以直接赋值;
还有许多的关于string的函数比如一些比较常用的str.enth(),str.size() str.empty()

总的来说string大大的降低了写代码时的难度更加的简便与快捷。
栈(stack)
头文件< stack >
栈是一种先进后出,在许多情况下可以使用
定义时stack< int > a;
其中的函数有 a.pop() a.push() a.top() a.size() a.empty()
比如括号匹配问题
大体思路就是遇到左括号(无论中括号小括号花括号)都压入栈里当遇到右括号时将栈顶也就是最后压入的左括号弹出,直到最后所有输入结束;体现的栈的使用

#include <iostream>
#include<stack>
using namespace std;

int main()
{
  stack<char>a;
  char b[10];
  cin>>b;
  for(int i=0;i<10;i++)
  {
    if(b[i]=='(')
    a.push(b[i]);
    if(b[i]==')')
    {
        a.pop();
    }
  }
  if(a.empty())
  cout<<"all maches";
  else
  {
    int k=a.size();
    for(int i=0;i<k;i++)
    {
        cout<<a.top();
        a.pop();
    }
  }
    return 0;
}

在这简单提一下排序函数:
sort是排序函数在头文件algorithm下的函数
sort(初始位置的地址,第一个无效位置的地址,比较条件)
如果没有比较条件就是从初始位置的地址到第一个无效位置地址之前这些数据从小到大排序,如果是自定义的函数的话如果是返回的true那么就不交换,如果是false就交换
简单举例:bool cmp(int a,int b){return a>b;}
这个例子就是让排序从大``到小排序,由此可以用到结构体的某一项比较来排序,或者其他用法。

#include <iostream>
#include<algorithm>
using namespace std;
bool cmp1(int a,int b)
{
    return a>b;
}
bool cmp2(char a,char b)
{
    return a>b;
}
int main()
{
    int a[10]={2,3,4,7,3,5,6,7,1,19};
    char b[10]="kndsaoiwf";
    sort(a,a+10,cmp1);
    sort(b,b+10,cmp2);
    for(int i=0;i<10;i++)
    cout<<a[i]<<" ";
    cout<<endl;
    for(int i=0;i<10;i++)
    cout<<b[i]<<" ";
    cout<<endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值