C++ 刷题 必备STL函数

C++ 刷题 必备STL函数

// 5.vector容器函数	size、clear、pop_back、push_back、front、back
end(); //获取最后一个数据的下一个位置			
v.push_back(1);  //在尾部插入1
v.pop_back() 	 // 删除最后一个元素
int a = *(v.rbegin())	//取最后一个元素   *(v.end()-1)   	 v[v.size()-1]
remove(v.begin(), v.end(), val); // “移除”val,实际是放到最尾部,但显示,通常与erase配合使用

v.erase(v.begin()+2);	// 删除第三个元素,返回第四个元素地址
v.erase(v.end()-1);  // 删除最后一个元素   end()-1  !!!!!!!
v.insert(v.begin(),1);  // 在最前面插入整数100
v.insert(v.begin(),5,1);  // 在第一个元素前插入5个1
v.insert(v.begin() + i, k);  //在第i个元素前插入k
v.insert(v.begin(), v2.begin(), v2.end());  // 在v头部插入v2
v.resize(10);  // 大小变为10, 扩大用0填充,缩小
v.resize(101); // 大小变为10, 扩大用10填充,缩小最后几个元素删除

reverse(v.begin(), v.end());  //翻转
sort(vec.begin(), vec.end()); //从小到大排序
for(auto it=vector.rbegin(); it != vector.rend(); it++)	 //反向遍历

 

// 6. string 容器
string s = "234";    s += "world";     s.append("哇塞");   
s.append(n,'0') 		// 在字符串后面加n个0
s.append(ss, 2, 3)		// 在尾部加入,ss的第2位开始后3个元素
s.insert(2,"hello")    // 在第二个位置插入, 后面不会覆盖
s.replace(2, 6, "xxx");    // 替换0开始第2个位后6个字为xxx    “替换”!!
s.push_back(i)       // 只能插入单个字符,append可以插入字符串
s.pop_back();		// 移除最后一个
s.back();  			// 读取最后一个
s.substr(a,b)		//返回的是从a开始的b个字符
s.substr(num)		//返回从num脚标开始的所有字符,包括num角标对应的字符
    
// stack容器 栈		不能遍历			#####stack 和queue的 是 push  不是  push_back
stack<int> sta;
sta.top();       //返回栈顶元素
sta.pop();
sta.push();
sta.size();
sta.empty();

// queue容器  队列		不能遍历			#### queue是front  不是top
q.push(elem);  //往队尾添加元素
q.pop(); //从对头移除第一个元素
q.back(); //返回最后一个元素
q.front(); //返回第一个元素



// set容器有序,不重复
set<int> set1;
set<int> set2 (set1.begin(), set1.end());
set<int> set6 {1,2,10,10}; 	// 构造
set.size(); 	 	// 返回容器中元素的数目
set.insert(elem); 	// 在容器中插入一个元素。
set.find(key); 		// 查找键key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end();
set.count(key); 	// 查找键key的元素个数, 只能返回0/1.  因为不能重复
set.erase(elem/iter); //删除值为elem的元素,删除改迭代器 
for(auto x:set)     // 不支持通过 索引 遍历 set[i]

// unordered_set无序,不重复 				
unordered_set<int> set1;
unordered_set<int> set1(nums1.begin(), nums1.end());	// 经常用	!!!!
set1.find(x)		// 查找x,找到返回迭代器,失败返回end()
set1.insert(x)
set1.erase(elem); 	//删除值为elem的元素
if (m.find(key) != m.end()) { // 元素找到 }

    
// map容器-----对元素修改一定加取地址for(auto &e : m)  !!!!!!!!!!!!!!!!!!!!!
map<int,string> m;		unordered_map<int,string> um
m.insert(pair<int,string>(0,"wodennn"));  //插入
m.insert(make_pair(i, j))    			 //插入
m[4] = "ddddd";							//插入
auto it = m.find(5);	//查找
auto it = m.begin();
while(auto it!=m.end())	// while遍历
{
    cout<< it->first << it->second <<endl;
    it++;
}
for(it=m.begin(); it!= m.end(); it++)	//for 遍历
{
    cout<< it->first << it->second <<end;
}
for(auto it=m.rbegin(); it != m.rend(); it++)	//for   反向遍历  从大到小输出
{
    cout<< it->first << it->second <<end;
} 
for(auto &e : m)		// for遍历
{
    cout<< e.first << e.second << endl;  // e.first, e.second       
}
  • 13
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值