C++学习笔记

  • 为什么写这篇博文
    平时在刷题的过程中遇到一些c++的新用法,学了后容易忘记。打算就在这里记录一下,方便以后看。
  1. stringstream用法
    常用于输入带空格的字符串并且按空格分割开来,如下所示

#include <bits/stdc++.h>

using namespace std;


int main() {
    //freopen("E:\\coding\\1001.txt","r",stdin);//重定向输入
    stringstream ss;
    string ss2,ss3;
    cin>>ss3;
    getchar();//cin不会处理回车键,不加这步,getline会把输入cin的回车键当作结束符
    getline(cin,ss2);
    ss<<ss2;
    while(ss>>ss2) {
        cout<<ss2<<endl;
    }
    return 0;
}

关于stringstream更全面用法参考大佬博文

  1. 关于STL的vector
    2.1 vector push_back复杂度简单分析
    vector倍增因子为m,要插入n个元素。vector每一次倍增都要原先数组中的元素拷贝到新数组。
    vector要拷贝 logm(n)次,第i次拷贝元素为m^i。
    显然是个等比数列,最后可证得复杂度为m/(m-1)
    2.2 vector中erase和remove的区别
    remove:它并不真正的改变vector数组的长度,只是将要删除的元素移动到数组末尾,并返回一个指向第一个要删除位置的迭代器。经常可以与erase连用。
    erase:能改变vector数组的长度,是真正的删除。可以删除一个指定范围内的元素。
  	vector<int>vec;
    for(int i=0;i<10;i++) vec.push_back(i);
    vec.erase(remove(vec.begin(), vec.end(), 3), vec.end());
    for(int i=0;i<vec.size();i++) cout<<vec[i]<<" ";
2.3vector 二维数组的排序

vector二维数组默认按第1列排序,当然也可以自定义按某一列排序,如下所示

vector<vector<int>>g;
int cmp(const vector<int> &a, const vector<int> &b)
{
	return a[3] > b[3];
}
 
sort(g.begin(), g.end(), cmp);

更多用法参考博客 vector更详细用法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值