(入门自用)C++--STL-string-迭代器

STL

标准模板库,是C++标准库的重要组成部分。

string类

string  动态增长char字符数组 左闭右开

每一个string对象包括但不限于以下函数

string s1;

s1.begin();//第一个元素

s1.end();//最后一个元素的下一个位置

s1.rebegin;//最后一个元素;

s1.rend;//第一个元素的前一个位置

s1.cbegin();//const的begin

s1.cend();//const的end

s.append(str.begin(),str.end());//把str整个拷贝过来

s.append(str.begin()+2,str.end()-2);//拷贝str的一部分

s1.max_size();//这里不管是哪个string对象都是一个固定值

s1.capacity();//目前的s1的容量

s1.reserve(100);//提前开约100个的容量 开空间

s1.resize(100);

s1.resize(100,'x');//开空间加初始化

s2.assign(s1);//s1的内容赋值给是s2

#include 
#include 
using namespace std;
void string1()
{
    //创建
    string s1;
    string s2("hello world !");
    string s6(100,'x');//用100个x来初始化
    //拷贝
    string s3(s2);//将s2的内容拷贝到s3
    string s4(s2,6,3);//从s2的下标为6开始拷贝3个数据 最多拷贝到s2结束
    string s5("hello world",5);//拷贝5个数据
}
void string2()
{
    //赋值
    string s1;
    string s2=“hello world!!!”;//构造+拷贝构造-->优化为直接构造
    s1=s2;
    s1="xxxx";//字符串
    s1='x';//字符
    //越界会崩溃
    //遍历String
    for(size _t i=0;i lt(10,1);
    List::iterator lit=lt.begin();
    while(lit!=lt.end())
    {
        cout<<*lit<<" ";
        ++lit;
    }
    cout<

#include 
#include 
using namespace std;
void string6()//插入
{
    string s("hello");
    s.push_back('-');
    s.push_back('-');
    s.append("world");// hello--world
    cout<< s <

例题:(仅仅反转字母)

class Solution
{
public:
    bool IsLetter(char ch)
    {
        if((ch>'a'&&ch<'z')||(ch>'A'&&ch<'Z'))
            return true;
        else
            return false;
    }

    sting reverseOnlyLetters(string s)
    {
        size_t begin =0,end=s.size()-1;
        while(begin

库里面有一个找字母的函数

isalpha(char* p)

字符串相加

(入门自用)C++--STL-string-迭代器_第1张图片

class Solution
{
public:
    string addStrings(string num1,string num2)
    {
        int end1=num1.size()-1,end2=num2.size()-1;
        int next=0;//表示是否进位
        string strRet;//用于保存结果
        while(end1>=0 || end2 >=0)
        {
            int val1=end1>=0?num1[end1]-'0':0;
            int val2=end2>=0?num2[end2]-'0':0;
            int ret=val1+val2+next;
            next=ret>9?1:0;
            //string类里的头插
            //strRet.insert(strRet.begin(),'0'+(ret%10));
            
            //这里采用尾插加逆置
            strRet+=('0'+ret%10);
            --end1;
            --end2;
        }
        //if(next)
            //strRet.insert(strRet.begin(),'1');

        if(next==1)
            strRet+='1';
        //逆置
        reverse(strRet.begin(),strRet.end());//给起始位置和结束位置
        return strRet;
    }

}

范围for

自动迭代,自动判断结束

for(auto ch : s)
{
    cout<< ch <<" ";
}

for(auto& ch : s)
{
    cout<< ch <<" ";
}

依次取s中每个字符,赋值给ch

for(auto e: lt)//上述的 List lt(10,1);
{
    cout << e <<" ";
}

范围for的底层实现就是迭代器

你可能感兴趣的:(C++,c++,开发语言,c语言)