备战蓝桥杯——map、set、substr、strlen(char)简单笔记

string str;

str.substr(0, 5);  

字符串.substr(参数1,参数2)

参数1(可以是0、正整数、负数)
如果是0或正整数,则代表字符串截取的起始下标
如果是负数,则代表从倒数第几个字符开始截取

参数2:
字符串截取字符的个数(正整数)
如果是0或负数,则会返回空字符串

str.substr(5)
字符串.substr(参数);
如果是0或正整数:字符串截取的起始下标,默认截取至字符串结尾
如果是负数:则从倒数第几个字符开始截取,默认截取至字符串结尾

strlen(char) 获取字符数组char a[]的长度
 

set    (操作)


set < type > s            定义一个集合s
s.insert( item )              把 item放入s集合里面
s.erase( item )              删除元素 item
s.empty( )                   判断集合是否是空的
s.size( )                       返回集合元素个数
s.count( 6 )                返回元素6出现的个数,因为set是集合所以返回值只能是1or0,已经去重了                                     所以可用来判断这个元素是否存在

s.find( num )         find()返回的其实是一个指针/索引,如果 s中不存在num则最后返回的是end()

该功能检查元素是否属于集合。 如果元素属于集合,则它返回确切的迭代器位置,否则返回st.end() 。这一点和string的find用法又不相同。

C++STL中set不存在对应元素时set.find的返回值_Nepune79的博客-CSDN博客

可以参考这个博主写的:

C++ find 函数_MirrorN的博客-CSDN博客_c++ find

vector<int> v;    find(v.begin(),v.end(),

//vector中find()算法
vector<string> v;
    v.push_back("aaa");
    v.push_back("bbb");
    v.push_back("ccc");
    v.push_back("ddd");
    if(find(v.begin(), v.end(), "bbb") != v.end()){
        cout<<*find(ar1.begin(), ar1.end(), "bbb")<<endl;//返回指针指向值(不能返回指针
        cout<<find(v.begin(), v.end(), "bbb")-v.begin()<<endl;
        //看到find函数的返回结果与vector的end比较可以看出其实这是一个指针,那么如果我们想要获得索引
        //那么将返回结果与begin做差即可
    }
    else
        cout<<"NO"<<endl;

//string中的find()操作   
	string str = "hello world";
    char ch = 'l';
    if(str.find(ch)!=string::npos){ //查找单个字符,没找到str.find(ch)返回的就是string::npos
        cout<<str.find(ch)<<endl;  //返回位置 
    }
    else
        cout<<"NO"<<endl;
//string:npos其实是等于4294967295的,通常使用这个值作为没有匹配到内容的结果判定。
//string中的find()操作   
	string str = "hello world";
    char ch = 'l';
    if(str.find(ch)!=string::npos){ //查找单个字符
        cout<<str.find(ch)<<endl;  //返回位置 
    }
    else
        cout<<"NO"<<endl;
//获取到所有的匹配字符的位置
	int p = 0;
    while(str.find(ch, p)!=string::npos){
            p = str.find(ch, p);
            cout<<p<<endl;
            p = p + 1;
        }
//获取匹配字符串的位置 
    string ps;
    while(cin>>ps){
        if(str.find(ps)!=string::npos){
            cout<<str.find(ps)<<endl;
        }
        else
            cout<<"NO"<<endl;
    }

#include<iostream>
#include<set>
using namespace std;
int main()
{
	set<int> st;
	for(int i=0;i<=3;i++)
	{
		st.insert(i);
	}
	▲set<int>::iterator it=st.find(2); 
	▲cout<<*it;
	return 0;
}
其中:
    set<int>::iterator it=st.find(2); //返回的是迭代器,只能返回指向的元素值,不可求位置 
	cout<<*it;    //同时如果找不到,返回的其实是元素个数

可用这个替代==> cout<<*st.find(2)<<endl;  得到

返回值是 2

map


//定义一个map对象
map<int, string> dx     
//查找元素1出现的次数            
dx.count(1)          
// 第一种 用 insert函數插入pair , pair 是一个封装好的含有2个对象的结构体,map里经常使用pair
dx.insert(pair<int, string>(000, "student_zero"));  
// 第二种 用 insert函数插入value_type数据
dx.insert(map<int, string>::value_type(001, "student_one"));     —> 不常用
// 第三种 用"array"方式插入
mapStudent[123] = "student_first";
mapStudent[456] = "student_second";

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值