string类/vector/map

/*C++教程网笔记,感谢Mr.J老师*/

标准库类型

string 字符串 char*

vector 动态数组 静态数组[]

map key/value 内部是以树的形式存储的。

1)string介绍

2)string 对象的定义和初始化

3)常用成员函数

/*********************************/

4)vector介绍

5)vector对象初始化

6)vector常用成员函数

/***********************************/

7)map介绍

8)插入数据

9)查找与修改

10)删除

1)string介绍(标准库string类型)

string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作。

typedef basic_string<char>string;

typedef basic_string<wchar_t> wstring;

要使用string类型对象,必须包含相关头文件

        #include <string>

        using std::string;

/*string对象的定义和初始化*/
string s1; //默认构造函数,s1为空串
string s2(s1); //将s2初始化为s1的一个副本
string s3("value");//将s3初始化为一个字符串字面值副本
string s4(n,'c'); //将s4初始化为字符‘c’的n个副本
#include <string>
#include <iostream>
using namespace std;


int main(void)
{
		string s1;
		string s2("abc");
		cout << s2 << endl;

		basic_string<char> s3("xxx"); //等价于string s3("xxx");
		cout << s3 << endl;

		string s4("abcdefg",4);
		cout << s4 << endl;

		string s5(s2,2,3);
		cout << s5 << endl;

		string::iterator  first = s2.begin() + 1;
		string::iterator last = s2.begin() + 3;

		string s6(first, last); // [first,last)
		cout << s6 << endl;

		return 0;
}
/*
输出结果:
abc
xxx
abcd
c
bc
*/

 3)常用成员函数

#include <string>
#include <iostream>
using namespace std;


int main(void)
{
		
	/*
	* string STL类函数的使用
	*/
	string s1("abcd");
	cout << s1.size() << endl;   // 字符串大小 4
	cout << s1.length() << endl;  // 字符串大小 4
	cout << s1.empty() << endl; // 非空0

	cout << s1.substr(1,2) << endl; //取字串  bc 
	cout << s1.substr(1) << endl; //参数:开始索引,结束索引(默认-1).

	string::size_type pos =  s1.find("c",1);//参数:需要查找的字符,开始查找的位置。
	if (pos == string::npos)
	{
		cout << "not found " << endl;
	}
	else
	{
		cout << "pos = " << pos << endl;
	}

		return 0;
}

/*输出结果2:
4
4
0
bc
bcd
pos = 2
*/

 

4)vector介绍

vector是同一种类型的对象的集合

vector的数据结构很像数组(元素存储空间是连续的,空间又是可以扩展的),能非常高效和方便地访问单个元素。

vector是一个类模板(class template)

要使用vector必须包含相关头文件

        #include <vector>

        using std::vector;

vector类定义了好几种构造函数

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

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

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

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

5)vector对象初始化

6)vector常用成员函数

#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

typedef vector<int> INTVEC;

//void ShowVec(const INTVEC& v) //打印vector
//{
//	for (size_t i = 0; i < v.size(); i++)  //size函数返回vector的元素的个数
//	{
//		cout << v[i] << "  ";
//	}
//	cout << endl;
//
//}
void ShowVec(const INTVEC& v) //通过迭代器实现vector打印,vector可以看成容器,string也是容器,迭代器可以看成是泛型程序指针,如vector<int> 看成int*.
{
	INTVEC::const_iterator it;
	for (it = v.begin();  it != v.end(); ++it)
	{
		cout << *it << " ";
	}
	cout << endl;	

}

int main(void)
{
	INTVEC v;
	v.push_back(1);//puch_back函数在末尾添加元素
	v.push_back(2);
	v.push_back(3);
	v.push_back(4);
	v.push_back(5);
	v.push_back(3);


	//cout << v.back() << endl;   //back()取出最后一个元素
	//v.pop_back();    //pop_back()弹出最后一个元素

	ShowVec(v);
	//v.erase(v.begin() + 2);  //erase()移除元素。
	//v.erase(v.begin(),v.begin()+2);//移除一段元素
	v.erase(remove(v.begin(),v.end(),3),v.end());//移除值为3的元素
	ShowVec(v);
	
	return 0;

}

7)map介绍(标准库的map类型,关联式容器,key  value )

使用map得包含map类所在得头文件

#include<map>

定义一个map对象:

map<string,int>  mapTest;  //用string作为索引,存储int对象。

#include <map>
#include <string>
#include <iostream>

using namespace std;

int main(void)
{
	//定义map对象
	map<string, int> mapTest;   //map<key,value>

	//插入数据的四种方法
	//插入到map容器内部的元素默认是按照key从小到大来排序的。
	mapTest["aaa"] = 100;   //int& operator[](const string& index); //用运算符重载实现
	mapTest.insert(map<string, int>::value_type("bbb", 200));
	mapTest.insert(pair<string,int>("ddd",400));
	mapTest.insert(make_pair<string,int>("ccc",300));


	//打印map
	map<string, int>::const_iterator it;
	for (it = mapTest.begin(); it != mapTest.end(); ++it)
	{
		cout << it->first << "  " << it->second << endl;
	}

	
	return 0;
}

map的查找与修改

#include <map>
#include <string>
#include <iostream>

using namespace std;

int main(void)
{
	//定义map对象
	map<string, int> mapTest;   //map<key,value>

	//插入数据的四种方法
	//插入到map容器内部的元素默认是按照key从小到大来排序的。
	mapTest["aaa"] = 100;   //int& operator[](const string& index); //用运算符重载实现
	mapTest.insert(map<string, int>::value_type("bbb", 200));
	mapTest.insert(pair<string, int>("ddd", 400));
	mapTest.insert(make_pair<string, int>("ccc", 300));

	//删除map
	mapTest.erase("bbb");
	map<string, int>::const_iterator it;

	it = mapTest.find("ccc");
	if (it != mapTest.end())
	{
		mapTest.erase(it);
	}
	
	打印map
	//map<string, int>::const_iterator it;
	for (it = mapTest.begin(); it != mapTest.end(); ++it)
	{
		cout << it->first << "  " << it->second << endl;
	}

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值