C++ STL

C++ STL

  • string
  • vector
  • set
  • unordered_set
  • list
  • map

string

string s1;//初始化字符串,空字符串
string s2 = s1; //拷贝初始化,深拷贝字符串
string s3 = "I am Yasuo"; //直接初始化,s3存了字符串
string s4(10, 'a'); //s4存的字符串是aaaaaaaaaa
string s5(s4); //拷贝初始化,深拷贝字符串
string s6("I am Ali"); //直接初始化
string s7 = string(6, 'c'); //拷贝初始化,cccccc

getline(is,s); //从is中读取一行赋值给s,返回is
s.empty(); //若s为空,返回true
s.size(); //返回s中字符个数
s.find("am",0); //返回子串位置,第二个参数表示从第几位开始搜索 若找不到 返回 string::npos
string str;
getline(cin, str); //返回输入的一整行内容
cout << str << endl;
iterator

在C++中,有迭代器iterator,常使用它来访问容器元素。

string str = " This is iterator";
string ::iterator it;
for( it = str.begin(); it != str.end(); it++){
	cout<<*it<<endl;
}

//反向迭代(以vector为例)
vector<string>::reverse_iterator iter
for (iter = v.rbegin(); iter != v6.rend(); iter++)
{
	cout << *iter << endl;

}

vector

#include <vector>

vector<type> v; //如果vector的元素类型是int,默认初始化为0;如果vector元素类型为string,则默认初始化为空字符串。
vector<type> v(v0); //v中包含所有v0元素的副本
vector<type> v(n); //v中包含n个重复地执行了值初始化的对象
vector<vector<int> >;  //注意空格。这里相当于二维数组int a[n][n];
vector<int> v5 = { 1,2,3,4,5 }; //列表初始化,注意使用的是花括号
 vector<vector<int> > newOne(row_num, vector<int>(col_num, 0));//二维初始化
 vector<vector<int> > vec(m, vector<int>(n, 0));//初始化一个m行n列的元素值全为0的二维数组


v1.push_back(n); //向vector中添加元素
v.empty()
v.size()
v[n] //返回第n个元素 v1[i] = 100; 只能对已存在的元素进行赋值或者修改操作,如果是要加入新元素,需要使用push_back
v.pop_back(); //删除尾部对象
v.clear(); //删除所有元素
v.erase(); //删除一个或多个元素
v.front(); //访问第一个元素
v.back(); //访问最后一个元素


 
vector<int>::iterator it = find(vec.begin(), vec.end(), 6);

if (it != vec.end())
    cout<<*it<<endl;
else
    cout<<"can not find"<<endl;

//不同于map(map有find方法),vector本身是没有find这一方法,其find是依靠algorithm来实现的 find的返回值是一个迭代器(iterator),如果找到了会返回指向目标元素的迭代器,没找到会返回end()。

补充[博客](https://blog.youkuaiyun.com/xzymmd/article/details/83652726)

set

set里面的元素是有序的且唯一的,往set里添加元素会自动排序.
#include <set>

set<int> s;
s.insert(3) //向容器中添加新元素。

unordered_set

#include <unordered_set>
unordered_set 容器和 set 容器很像,唯一的区别就在于 set 容器会自行对存储的数据进行排序,而 unordered_set 容器不会。

  • 容器内部存储的各个元素的值都互不相等,且不能被修改。
  • 不会对内部存储的数据进行排序

list 双向列表 不能随机访问元素

list容器不能调用algorithm下的sort函数进行排序,因为sort函数要求容器必须可以随机存储,而list做不到。所以,list自己做了一个自己用的排序函数。

map

#include <map>

map<string, int> v;
v["Kobe"] = 100;
v["James"] = 99;  
map<string, int>::iterator it;
for (it = v.begin(); it != v.end(); it++)
	{
		cout << it->first << "  " << it->second << endl;  //注意用法,不是用*it来访问了。first表示的是key,second存的是value
	}
	cout << endl;

可以通过count 来判断map 中是否存在某个key, 若v.count(“Lee”)返回为0,说明该key不存在

unordered_map

unordered_map<string, vector<string> > tmp;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值