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;
}