C++Simplify04-标准库string和vector

本文详细介绍了C++标准库中的string与vector容器的使用方法,包括构造函数、读写操作、常用操作、内存管理、迭代器等核心知识点,通过每日三题加深理解和实践。

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

1.      标准库string

1-1:声明:#include<string>  usingstd::string; //或者using namespace std;

1-2string对象常用的构造函数

           string s1;  //默认构造函数,s1为空串

           string s2(s1); //s2初始化为s1的一个副本

           string s3(“value”); //s3初始化为一个字符串字面值副本

           string s4(n,’c’);   //s4初始化为字符’c’n个副本

1-3string对象的读写 cin>>str;  cout<<str;

读取并忽略开头所有的空白字符(如空格、换行符、制表符)

           读取字符直至再次遇到空白字符,读取终止

           对未知数目string的读入

                           string str;

         while(cin>>str)

            cout << str << endl;

      当输入无效字符时停止循环(输入Ctrl+Z)

1-4getline读取整行文本,不包括换行符,且不忽略航开头的换行符。

           getline的参数:istream输入流对象和 string对象

                      

1-5string常用操作

str.empty();   如果str为空串,返回true否则返回false  bool

str.size();     返回s中字符的个数  size_type

str[n];       返回str中位置为n的字符,位置从0开始计数  char

str1+str2;    字符串连接,返回新的字符串  string型。(+左右必须至少有一个是string,不能都是字面值)

str1 += str2;  str2追加到str1后面

str1 = str2;   字符串赋值

str1 == str2;判等操作 相等返回true否则返回false  bool

!= < <= >>=  保持常有含义

1-6:补充string::size_type

         事实上size()返回的是string::size_type类型的值。size_type即为unsigned型。

size_type存储的string长度是int型所能存储的两倍。所以为了存储大文本string,避免溢出,保存string对象size最安全的方法就是使用string::size_type类型,例如:

         string str; 

         cin >> str;

         string::size_type  st = str.size();

1-7:字符串比较大小:(与字典排序相同策略,字典中排在前面的小于排在后面的)

如果连个string长度不同,且短的string对象与长的string对象的前面部分相匹配,则短的string对象小雨长的string对象;

         如果两个string对象的字符不同,则比较第一个不匹配的字符。

         string str1 = “Hello”;  string str2 = “Hello World”;  string str3 = “Hiya”;

         str1 <str2;  str3 > str1;  str3 > str2;

1-8:赋值本质:string str= “Hello”;  sting str2 = “World”;  str1 = str2;

先把str1占用的相关内存释放掉,再分配足够str1存放str2副本的内存空间,最后把str2中的所有字符复制到新分配的内存空间。

         1-9:单个char字符处理

         

                  

2.      标准库vector

2-1vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库将负责管理与存储元素相关的内存。我们把vector成为容器,可以包含其他对象(同一类型)。必须有的声明:

#include<vector>

using std::vector;

2-2vector是一个类模板。

2-3vector对象的定义和初始化:

vector<T>v1;  vector保存类型为T的对象。默认构造函数v1为空

vector<T> v2(v1);  v2v1的一个副本

         vector<T>v3(n,i);  v3包含n个值为i的元素

         vector<T>v4(n);   v4含有值初始化的元素的n个副本

         2-4vector支持动态增长。push_back();函数

         2-5vector常用操作:

                   v.empty(); 如果v为空,返回true否则返回false

                   v.sizse();  返回vector中个数 size_type类型

                   v.push_back(t); 增加一个值为t的元素

                   v[n];  返回v中位置为n的元素

                   v1= v2;  赋值

                   v1== v2; 判等

                   !=<><=>=  比较  

3.      迭代器iterator。迭代器是一种检查容器(必须是容器类,例如vector)内元素并遍历元素的数据类型。

3-1:每种容器类型都定义了自己的迭代器类型,如vector

           vector<int>::iterator  iter;   //int型的vector迭代器定义语句

3-2beginend操作。

iverc.begin(); 返回迭代器指向的第一个元素vector<int>::iterator iter =iverc.begin();

iverc.end(); 超出末端迭代器。end操作返回的迭代器指向vector的“末端的下一个”起到哨兵的作用。

         3-3:自增和解引用运算(*

                   *iter返回迭代器当前所指向的元素。(*称为解引用操作符)

                   iter++;则迭代器向前移动一个位置,指向容器中的下一个元素

         3-4const_iterator该类型只能用于读取容器内元素,不能改变其值。

                   注意:中间有下划线,不是constiterator

const声明的iterator对象必须生声明时初始化,一旦初始化后,就不能改变,自增等操作都不可以实现。

const_iterator对象可以用constvector或非const vector,因为不能改写元素值。const迭代器这种类型几乎没什么用处:一旦它呗初始化,只能用它来改写其指向元的元素,但不能使它指向任何其他元素。

 

每日三题(2012-07-31

1)读一组整数到vector对象,计算并输出每对相邻元素的和。如果读入元素个数为奇数,则提示用户最后一个元素没有求和,并输出其值。然后修改程序:头尾元素两两配对(第一个和最后一个,第二个和倒数第二个,以此类推),计算每对元素的和,并输出。

2)读入一段文本到vector对象,每个单词存储为vector中的一个元素。把vector对象中每个单词转换为大写字母。输出vector对象中转化后的元素,每八个单词为一行输出。

3)编写程序来创建有10个元素的vector对象。用迭代器把每个元素值改为当前值的2倍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值