CSDN收藏整理(2020.11.8)

C++ stringstream類的用法

一、類型轉(zhuǎn)換-數(shù)字->字符串
#include<bits/stdc++.h>
using namespace std;
int main()
{
    stringstream ss;
    int num = 35;
    string s;
    ss << num;
    ss >> s;
    cout << s << endl;
    return 0;
}
二、類型轉(zhuǎn)換--字符串->數(shù)字
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s = "123";
    stringstream ss;
    int num;
    ss << s;
    ss >> num;
    cout << num << endl;
    return 0;
}
三、以空格解析字符串
#include <iostream>
#include <sstream>
#include<string>
using namespace std;
int main(void)
{
    stringstream ss;
    string s="2 3 4 5 6";
    int sum = 0;
    ss << s;
    int num;
    while (ss>>num) {
        sum += num;
    }
    cout << sum << endl;
    return 0;
}

二、歐幾里得算法

int gcd(int a,int b){
  if(b==0)return a;
  gcd(b,a%b);
}

三、二分查找答案

const int N = 0x3f3f3f3f;
int main()
{
  int ans, l, r;
  int l = a, r = b;
  while (l <= r) {
      mid = (l + r) / 2;
      if (check(mid)) {
          ans = mid;
          mid + l + 1;
      }
      else mid = r - 1;
  }
  cout << ans << endl;
  return 0;
}

四、雙端隊列deque

push_back 在末尾插入元素,不斷擴(kuò)張隊列
push_front 在隊頭覆蓋元素 不會擴(kuò)張隊列

#include<bits/stdc++.h>
using namespace std;
int main()
{
    deque<int> d;
    d.push_back(1);
    d.push_back(2);
    cout << d.front() << endl; //隊頭
    cout << d.back() << endl;//隊尾
    d.push_front(10);
    cout << d[0] << ' ' << d[1] << endl;

    return 0;
}

五、優(yōu)先隊列

1、優(yōu)先隊列的定義

priority_queue<a,vector<a>,greater<a> >que1;
priority_queue<a,vector<a>,less<a> >que2;

因為優(yōu)先隊列其實是一個堆
greater 是從小到大
less是從大到小
默認(rèn)是從大到小
2、重載運算符

bool operator<(A a1,A a2){
  return a1.r<a2.r;
}
bool operator(A a1,A a2){
  return a1.l>a2.l;    
}

大于號>的重載對應(yīng)了greater的重載,是根據(jù)重載規(guī)則從小到大排序
小于號<的重載對應(yīng)了less的重載,是根據(jù)重載規(guī)則從大到小排序

六、set

set里面每個元素只存有一個key值,它支持高效的關(guān)鍵字查詢操作,比如檢查一個關(guān)鍵字是否在set中。如果這個key值之前存在的話就不插入。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    set<int> s;
    s.insert(2);
    set<int>::iterator iter;
    iter = s.find(2);
    cout << *iter << endl;
    s.erase(2);
    cout << s.count(2) << endl;
    cout << s.count(1) << endl;

    return 0;
}

七、map

#include<bits/stdc++.h>
using namespace std;
int main()
{
    map<int, string> m;
    m[1] = "a";
    m[2] = "b";
    cout << m[1] << endl;
    cout << m[2];
    map<int, string>::iterator iter;
    iter = m.begin();
    for (iter; iter != m.end(); ++iter) {
        cout << iter->first << ' ' << iter->second << endl;
    }

    return 0;
}

八、reverse

reverse反轉(zhuǎn)字符串

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

int main() {

    string N;
    cin>>N;
    reverse(N.begin(), N.end());
    cout<<N<<endl;
}

reverser反轉(zhuǎn)字符數(shù)組

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main() {
    char a[101];
    cin.getline(a,sizeof(a));
    int m=strlen(a);
    reverse(a,a+m);
    puts(a);
}

九、快速冪

typedef long long ll;
ll quick_pow(ll x,ll n,ll m){
  ll res=1;
  while(n>0){
    if(n&1)res=res*x%m;
    x=x*x%m;
    n>>=1;
  }
  return res;
}

十、去重函數(shù) unique

#include <iostream>
#include <algorithm>   // sort(), unique()
#include <functional>  // less<int>()

using namespace std;

int main()
{
    int i;
    int a[10] = { 0, 7, 7, 6, 1, 1, 5, 5, 8, 9 };

    sort( a, a + 10, less<int>() );  // 排序

    int n = unique(a, a + 10) - a;   // 去重

    for ( i = 0; i < n; i++)  // 注意i < n
        cout << a[i] << " ";  // 0 1 5 6 7 8 9
}

十一、map中的count和find函數(shù)

#include<bits/stdc++.h>
using namespace std;
int main()
{
    map<string, int> m;
    m.insert(make_pair("test1", 1));
    m["test2"] = 2;
    map<string, int>::iterator it;
    it = m.find("test2");
    cout << it->second << endl;
    cout << m.count("test1") << endl;
    cout<<m.count("test2")<<endl;
    return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容