substr erase unique

张开发
2026/5/17 10:43:00 15 分钟阅读
substr erase unique
迭代器基础概念迭代器是C中用于遍历容器元素的抽象概念类似于指针。它提供了一种统一的方式访问不同容器如vector、list、string等中的元素。迭代器的核心操作包括解引用*it、递增it、比较it1 ! it2等。例如std::vectorintvec{1,2,3};for(autoitvec.begin();it!vec.end();it){std::cout*it ;}substr函数解析substr是std::string的成员函数用于提取子字符串其原型为stringsubstr(size_t pos0,size_t lennpos)const;pos起始位置从0开始len子字符串长度默认为npos直到字符串末尾示例std::string sHello, World!;std::string subs.substr(7,5);// World图示注意事项若pos超出字符串长度抛出std::out_of_range返回的子字符串是新的string对象与原字符串独立erase函数详解erase用于删除容器或字符串中的元素有三种常见形式删除单个元素iteratorerase(iterator position);删除区间iteratorerase(iterator first,iterator last);字符串按位置删除stringerase(size_t pos0,size_t lennpos);示例删除vector中的偶数std::vectorintv{1,2,3,4,5};for(autoitv.begin();it!v.end();){if(*it%20){itv.erase(it);// erase返回下一个有效迭代器}else{it;}}unique算法应用unique是定义在algorithm中的去重函数其原型为ForwardIteratorunique(ForwardIterator first,ForwardIterator last);特点仅移除相邻的重复元素实际不删除元素而是将不重复元素移动到前面返回新的逻辑结尾迭代器通常需要先对容器排序示例std::vectorintv{1,2,2,3,3,3,4};autolaststd::unique(v.begin(),v.end());v.erase(last,v.end());// 配合erase实现真正删除图示迭代器失效问题使用上述函数时需注意迭代器失效erase会使被删除元素及其后的迭代器失效unique不直接导致失效但后续操作可能需要更新迭代器正确做法是使用函数返回值更新迭代器itcontainer.erase(it);// 而非直接it综合应用示例结合三者实现字符串处理std::string straaabbbcccdddeee;// 去重相邻字符autonew_endstd::unique(str.begin(),str.end());str.erase(new_end,str.end());// 变为abcde// 提取第2-4字符并删除std::string substr.substr(1,3);// bcdstr.erase(1,3);// 剩余ae

更多文章