当前位置: 首页 > wzjs >正文

专业酒店设计网站建设湖南seo优化推荐

专业酒店设计网站建设,湖南seo优化推荐,python做网站方便么,wordpress 注册验证目录 一、 string 类的基本使用 1. 字符串的定义和初始化 2. 遍历字符串 下标访问方式 迭代器访问方式 正向迭代器: 反向迭代器: 范围 for 循环方式 二、 string 类的成员函数 1. 容量相关函数 2. 扩容机制 三、迭代器与容器的配合 1. vec…

目录

一、 string 类的基本使用

1. 字符串的定义和初始化

2. 遍历字符串

下标访问方式

迭代器访问方式

正向迭代器:

反向迭代器:

范围 for 循环方式

二、 string 类的成员函数

1. 容量相关函数

2. 扩容机制

三、迭代器与容器的配合

1.  vector 容器的迭代器使用

2.  list 容器的迭代器使用

四、实际应用案例:字符串数字相加


一、 string 类的基本使用

在C++ 中, string 类是用于处理字符串的强大工具。它包含在 <string> 头文件中。下面是一些基本的使用示例:

1. 字符串的定义和初始化

cpp#include <iostream>#include <string>int main() {std::string s0; // 定义一个空字符串std::string s1("hello world"); // 使用字符串字面量初始化std::cout << s1 << std::endl;return 0;}

在上述代码中,我们定义了一个空字符串 s0 和一个初始化为"hello world"的字符串 s1 ,并将 s1 输出到控制台。

2. 遍历字符串

下标访问方式

cpp#include <iostream>#include <string>int main() {std::string s1("hello world");for (size_t i = 0; i < s1.size(); i++) {std::cout << s1[i];}std::cout << std::endl;return 0;}

通过 size() 函数,length也行,但不推荐获取字符串长度,利用下标 [] 操作符遍历字符串中的每个字符并输出。

迭代器访问方式(类似于指针,但不完全是)

正向迭代器:
cpp#include <iostream>#include <string>int main() {std::string s1("hello world");std::string::iterator it = s1.begin();while (it != s1.end()) {std::cout << *it << " ";++it;}std::cout << std::endl;return 0;}

这里使用 begin() 函数获取指向字符串开头的迭代器, end() 函数获取指向字符串末尾(实际是末尾元素的下一个位置)的迭代器,通过迭代器遍历并输出字符。

反向迭代器:
cpp#include <iostream>#include <string>int main() {std::string s1("hello world");std::string::reverse_iterator rit = s1.rbegin();while (rit != s1.rend()) {std::cout << *rit << " ";++rit;}std::cout << std::endl;return 0;}

 rbegin() 函数获取指向字符串末尾的反向迭代器, rend() 函数获取指向字符串开头(实际是开头元素的前一个位置)的反向迭代器,实现反向遍历。

范围 for 循环方式

cpp#include <iostream>#include <string>int main() {std::string s1("hello world");for (auto ch : s1) {std::cout << ch << " ";}std::cout << std::endl;return 0;}

范围 for 循环会自动遍历字符串中的每个字符,代码简洁明了。

二、 string 类的成员函数

1. 容量相关函数

-  size() 和 length() :这两个函数功能相同,都用于返回字符串中有效字符的个数。

-  capacity() (借鉴数据结构):返回当前字符串在重新分配内存之前能够存储的字符数。

-  max_size()(不稳定,取决于编译器) :返回字符串能够容纳的最大字符数。

示例代码:

cpp#include <iostream>#include <string>int main() {std::string s1("hello world");std::cout << "size: " << s1.size() << std::endl;std::cout << "length: " << s1.length() << std::endl;std::cout << "capacity: " << s1.capacity() << std::endl;std::cout << "max_size: " << s1.max_size() << std::endl;return 0;}

2. 扩容机制

当向字符串中添加元素导致当前容量不足时, string 类会自动扩容。以下是演示 string 扩容过程的代码:

cpp#include <iostream>#include <string>int main() {std::string s1;size_t old = s1.capacity();for (size_t i = 0; i < 100; i++) {s1 += 'x';if (old != s1.capacity()) {std::cout << "扩容: " << s1.capacity() << std::endl;old = s1.capacity();}}return 0;}

在这个示例中,每次向字符串 s1 添加一个字符 'x' ,如果容量发生变化,就输出新的容量值。通常 string 的扩容策略是按照一定倍数(常见为1.5倍或2倍)增加容量。

不同编辑器有所不同:

三、迭代器与容器的配合(只做示范,后期具体会分析)

在C++ 中,迭代器不仅用于 string 类,还广泛应用于其他容器,如 vector 、 list 等,并且使用方式类似。

1.  vector 容器的迭代器使用

cpp#include <iostream>#include <vector>int main() {std::vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);std::vector<int>::iterator vit = v.begin();while (vit != v.end()) {std::cout << *vit << " ";++vit;}std::cout << std::endl;return 0;}

这里创建了一个 vector 容器并插入一些元素,通过迭代器遍历并输出容器中的元素。

2.  list 容器的迭代器使用

cpp#include <iostream>#include <list>int main() {std::list<int> lt;lt.push_back(10);lt.push_back(20);lt.push_back(3);std::list<int>::iterator lit = lt.begin();while (lit != lt.end()) {std::cout << *lit << " ";++lit;}std::cout << std::endl;return 0;}

对于 list 容器,同样使用迭代器来遍历其中的元素。

此外,还可以使用标准算法结合迭代器对容器进行操作,例如:

cpp#include <iostream>#include <vector>#include <algorithm>int main() {std::vector<int> v = {4, 2, 3, 1};std::reverse(v.begin(), v.end()); // 反转vectorfor (auto e : v) {std::cout << e << " ";}std::cout << std::endl;std::sort(v.begin(), v.end()); // 排序vectorfor (auto e : v) {std::cout << e << " ";}std::cout << std::endl;return 0;}

 reverse 算法用于反转容器中的元素顺序, sort 算法用于对容器中的元素进行排序,它们都通过迭代器指定操作的范围。

四、实际应用案例:字符串数字相加(下期详解)

假设有两个用字符串表示的数字,需要将它们相加并以字符串形式返回结果。以下是实现代码:

cpp#include <iostream>#include <string>std::string addStrings(std::string num1, std::string num2) {int end1 = num1.size() - 1, end2 = num2.size() - 1;std::string strRet;int carry = 0;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 + carry;carry = ret / 10;ret = ret % 10;strRet += ('0' + ret);--end1;--end2;}if (carry > 0) {strRet += ('0' + carry);}std::reverse(strRet.begin(), strRet.end());return strRet;}

在这个函数中,我们从两个字符串数字的末尾开始逐位相加,处理进位情况,最后将结果字符串反转得到正确的顺序。

通过对 string 类和迭代器的深入学习与实践,可以更好地处理字符串相关操作以及对容器进行遍历和算法操作,提高C++ 编程的效率和能力。

http://www.dtcms.com/wzjs/336311.html

相关文章:

  • 权威的手机网站建设网络营销心得体会1000字
  • 外贸网站建设制作公司百度一下你就知道移动官网
  • wordpress add_theme_page珠海seo关键词排名
  • 百度一下百度网页版主页搜索引擎优化的报告
  • 怎么做网站的寄生优化大师是什么
  • 泉州专业网站设计技术公司关键词搜索神器
  • 如何来做网站优化seo推广公司排名
  • 最近一周中国新闻大事湖南专业seo优化
  • 大连外贸网站制作网站建设与管理主要学什么
  • 苏州seo排名优化费用合肥网络公司seo
  • 做百度企业网站seo课程培训班费用
  • 潍坊公司网站建设给我免费的视频在线观看
  • 大连网站关键词推广推广优化师
  • 做网站教程如乐天堂网
  • dreamweaver 网站框架公众号推广方案
  • 做网站的版权问题微信广告怎么投放
  • 加强网站建设技术培训市场营销毕业论文5000字
  • 个人网站流程seo优化排名易下拉用法
  • 武进网站建设服务网站内容优化关键词布局
  • 网站建设价格明细表和网站预算搜索引擎优化论文
  • 网站建设与制网络营销渠道类型有哪些
  • 网站建设与推广方案上海百度seo牛巨微
  • 青岛开发区建网站公司慈溪seo排名
  • 北京西站停车场收费标准开封网站seo
  • 松江新城建设集团有限公司网站ueeshop建站费用
  • 网站开发进修2023年新闻热点事件
  • 织梦cms做视频网站专业seo推广
  • 烟台网站建设哪家便宜互联网营销工具
  • 公司网站备案需要什么广告投放价目表
  • 建网站报价汕头网站建设方案开发