第2章:string类型,vector使用

本文介绍了C++中string类型的基本操作与vector容器的应用方法,包括字符串的初始化、连接及迭代器的使用,同时展示了如何创建和操作vector,如动态数组的定义、元素的添加与迭代器的使用。

1,string类型和vector的使用
2,源码

#include<string>
#include<iostream>

using namespace std;
int main(int argc, char *argv[])
{
    string str = "";
    string str1(10 , 'H');
    string str2 = "some, string!";

    str = "hello world";
    cout << str  << endl;
    cout << str1 << endl;

    str += str1;
    cout << str <<endl;

    /*
    //C++11
    int count = 0;
    for (auto c : str2)
    {
        if (ispunct(c))
        {
            ++count;
            cout << c <<endl;
        }
    }
    for (auto &c : str2)
    {
        c = toupper(c);
    }
    */
    for (int i=0; i<str2.size(); i++)
    {
        cout << str2[i] <<endl;
    }


    return 0;
}
#include<iostream>
#include<vector>
#include<string>

/*
在c++中,vector是一个十分有用的容器
1,它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据
2,vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库
Vector使用方法
vector<T>          V1           //V1是一个空vector,它潜在的元素是T类型的,执行默认初始化
vector<T>          V2(V1)       //V2中包含所有V1所有元素的副本
vector<T>          V2=V1        //等价于V2(V1)
vector<T>          V3(n,val)    //V3包含了n个重复的元素,每个元素的值都是val
vector<T>          V4<n>        //V4包含了n个重复地执行力值的初始化的对象
vector<T>          V5{a,b,c...} //V5包含了初始值个数的元素,每个元素被赋予相应的初始值
vector<T>          V5={a,b,c..} //等价于V5{a,b,c...}
*/




using namespace std;
int main(void)
{
    //指定动态的数组变量
    vector<int>    Int_Test;                     			//定义一个int型的动态变量数组
    vector<int>    Int_Test1(Int_Test);          			//把Int_Test元素拷贝给Int_Test1
    vector<int>    Int_Test2 = Int_Test;         			//把Int_Test元素拷贝给Int_Test2
    vector<string> Dynamic_Arry;                 			//定义一个string型的动态变量数组
    
    
    //创建指定数量的元素
    vector<int>     Num_Arry(10,1);                   //定义一个10个长度int数组,每个初始化为1
    vector<int>     Num_Arry1(10);                    //定义一个10个长度int数组,默认初始化为0
    vector<string>  String_Arry(10, "HI");            //定义一个10个长度string 数组,每个初始为"HI"
    vector<string>  String_Arry1(10);                 //定义一个10个长度string 数组,每个初始为""
    vector<string>  Dynamic_Arry1{"a", "an", "and"};  //定义一个3 个长度string 数组,并分别初始化


    //列表初始值,元素数量使用区分
    vector<int>     Count_Arry(10);					  //定义一个10个长度int数组,默认值初始化0
    vector<int>     Count_Arry1{10};                  //定义一个1 个长度int数组,默认值初始化10
    vector<int>     Count_Arry2(10, 1);               //定义一个10个长度int数组,每个初始化为1
    vector<int>     Count_Arry3{10, 1};               //定义一个2 个长度int数组,分别初始化为10,1

    //对vector进行数字操作
    for (int i=0; i<20; i++)
    {
    	//Int_Teet[i] = i;                              //错误使用方法,因为此时Int_Test为空不包含任何元素,只能使用push_back添加
    	Int_Test.push_back(i);                          //依次把数据放到队尾	
    	Dynamic_Arry.push_back("hello");								//依次把数据放到队尾
    }
    
    //迭代器使用,迭代器适用于string对象和vector对象
    string s("some ting");                            //迭代器和指针用法类似
    if (s.begin() != s.end())                             //确保s非空
    {
            auto it = s.begin();                            //it表示s的第一个字符地址
    		*it = toupper(*it);                           //把首字母变成大写
    } 
    cout << s <<endl;
    
    for (auto it=s.begin(); it != s.end() && !isspace(*it); ++it)
    {
    	*it = toupper(*it);	
    }
    cout << s <<endl;
    
    //迭代器类型定义(iterator const_iterator) 
    vector<int>::iterator it;                         //it 只能读写vector<int>的元素
    string::iterator it2;                             //it2只能读写string对象中的元素
    vector<int>::const_iterator it3;                  //it3只能读元素,不能写元素
    string::const_iterator it4;                       //it4只能读字符,不能写字符
    
    //迭代器的运算
    {
	    vector<int> num(10,1);
	    int sought = 5;
	    auto beg = num.begin(), end = num.end();
	    auto mid = num.begin()+(end-beg)/2;               //初始化状态下的中间点
	    while ((mid != end) && (*mid != sought))          //当前还有元素尚未检查并且我们还没有找到sought
	    {
	    	if (sought < *mid)                              //不在后半部分
	      {
	      	end = mid;	
	      }		
	      else                                            //不在前半部分
	      {
	      	beg = mid+1;
	      }
	      
	      mid = beg+(end-beg)/2;                          //新的中间点
	    }
 	  }
    
    {
	    //标准begin和end
	    int ia[] = {0,1,2,3,4,5,6,7,8,9};
        int *temp_beg = begin(ia);
        int *temp_end = end(ia);
	    
        while ((temp_beg != temp_end) && (*temp_beg > 0))
	    {
            ++temp_beg;
	    }
    }
    
    
    
    
    return 0;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值