C++好用的代码

https://gitee.com/programmercarl/leetcode-master?_from=gitee_search

  1. vector遍历和map遍历
std::map<char, int> mymap;

// 插入单个值
mymap.insert(std::pair<char, int>('a', 100));
mymap.insert(std::pair<char, int>('z', 200));

for (auto& iter: mymap){
	cout<iter.first;
}

std::vector<int64_t> vec_temp;
for (auto& iter: recall_item) {
    vec_temp.push_back(iter.first);
}
for (auto& id: vec_temp) {
	cout<<id<<endl;
}

set<int > set1 ;
set1.insert(1);
set1.insert(2);
for(auto &it : set1){
    cout<<it<<endl;
}
  1. set遍历
#include <iostream>
#include<set>
using namespace std;
int main()
{
    int numList[6]={1,2,2,3,3,3};
    / /1.set add
    set<int> numSet;
    for(int i=0;i<6;i++){
      //2.1insert into set
        numSet.insert(numList[i]);
    }
    //2.travese set
    for(set<int>::iterator it=numSet.begin() ;it!=numSet.end();it++){
          cout<<*it<<" occurs "<<endl;
      }
    //3.set find useage

      int findNum=1;
      if(numSet.find(findNum)!=numSet.end())
    {
      cout<<"find num "<<findNum<<" in set"<<endl;
      }else{
          cout<<"do not find num in set"<<findNum<<endl;
    }
//set delete useage
    int eraseReturn=numSet.erase(1);
    if(1==eraseReturn){
        cout<<"erase num 1 success"<<endl;
    }else{
        cout<<"erase failed,erase num not in set"<<endl;
    }
      return 0;
}
  1. 带有pair的vector遍历
#include <iostream>
using namespace std;
#include <vector>
int main(){
    std::vector<std::pair<int64_t,double>> vec_temp;

    vec_temp.push_back(std::make_pair(5,5.0));
    vec_temp.push_back(std::make_pair(4,4.0));
    vec_temp.push_back(std::make_pair(3,3.0));
    vec_temp.push_back(std::make_pair(2,2.0));

    for(auto &item : vec_temp){
        cout<<item.first<<" "<<item.second<<endl;
    }
}
  1. 在for循环中删除元素
    https://blog.csdn.net/u013288190/article/details/122167859

  2. 有坑
    在刷leetcode的2131. 连接两字母单词得到的最长回文串这题中,发现这个坑

string temp = "";
temp=temp+iter.first[1]+iter.first[0];    //这么写是对的


string temp1 = "";
temp1 = iter.first[1]+iter.first[1];   //这么写是错的

6 创建vecotr

    vector<int>nums;//创建整型一维数组
    vector<int>nums(n);//指定长度为n
    vector<int>nums(5,3);//创建[3 3 3 3 3]

```cpp
//创建row行col列的二维vector
vector<vector<int>> b(row,vector<int>(col));
vector<vector<int>> vectors = {
        {0,10,5},
        {9,0,6},
        {2,13,0}
};

7 vecotr排序

int main(){
    vector<int> vec = {2,6,3,5,4,8,1,0,9,10};
    sort(vec.begin(), vec.end());
    for(int item: vec)
        cout << item << " ";
    return 0;
}
// out
/*
0 1 2 3 4 5 6 8 9 10
*/
//二维vector中使用lambda排序
sort(vec.begin(),vec.end(),[](vector<int>a, vector<int> b){
		return	a[1]>b[1];
	});

8 C++写文件

#include<fstream>
std::string request = context->m_request->request().value();
ofstream write;
write.open("result_105.txt", ios::app);
write <<request << endl;
write.close();

vecotor的demo

  1. insert
#include <iostream>
#include<vector>
using namespace std;
void show_vec(vector<int>& vec){
    for(int i=0;i<vec.size();i++){
        cout<<vec[i]<<" ";
    }
    cout<<endl;
}
int main(){
    vector<int> res(3);
    res[0]=0;
    res[1]=1;
    res[2]=2;
    res.insert(res.begin(),3);  //3 0 1 2 在0号元素前面插入
    show_vec(res);
    res.insert(res.begin()+1,4); //3 4 0 1 2 在1号元素前面插入
    show_vec(res);
    res.insert(res.end(),5); //3 4 0 1 2 5  在最后一个元素后面插入
    show_vec(res);
}
  1. 初始化
vector<int>list={1,2,3,4,5,6,7.0};

//https://leetcode.cn/problems/course-schedule/description/?envType=study-plan-v2&envId=top-interview-150 leetcode150题
vector<int> indegrees(numCourses,0);   //numCourses个0
vector<vector> adjacency(numCourses);  //numCourses个空的vector组成的数组
vector<vector<bool>> flags(board.size(),vector<bool>(board[0].size(),false));
  1. vector双向队列用法
//使用back()函数获取最后一个元素。
std::vector<int> vec = {1, 2, 3, 4, 5};
int lastElement = vec.back();

//c++ vector删除第一个元素
std::vector<int> vec = {1, 2, 3, 4};
vec.erase(vec.begin());  // 删除第一个元素

//c++ 删除最后一个元素
vector<int> nums = {1, 2, 3, 4, 5};
nums.pop_back();
  1. shared_ptr的拷贝
//----------------------test.cpp------------------------
#include <iostream>
#include <memory>
using namespace std;

class Bike{
public:
    int price;
};

int main()
{

    Bike* bi = new Bike();
    (*bi).price = 100;

    shared_ptr<Bike> p1 = make_shared<Bike>(*bi);

    //输出 p1 指向的数据
    cout << "(*p1).price is:" << (*p1).price << endl;

    (*p1).price = 200;
    cout << "(*p1).price is:" << (*p1).price << endl;
    cout << "bi.price is:" << (*bi).price << endl;
    return 0;
}
//--------------------终端的命令
g++ --std=c++11 test.cpp

//--------------------终端的结果
$ ./a.out 
(*p1).price is:100
(*p1).price is:200
bi.price is:100

数组

//定义数组,如果不初始化,在leetcode的结果是
        int a[5][5];
        int b[6];
        cout<<a[1][1]<<endl;    //结果是2281531
        cout<<b[3]<<endl;       //结果是792210872
        
        初始化方法和结果
        int c[5][5]={1};  //c[0][0]是1,其余都是0
        int d[6]={1};     //d[0]=1,其余都是0

栈的用法

//其实栈就这几个成员函数
empty() //堆栈为空则返回真 
pop() //移除栈顶元素 
push() //在栈顶增加元素 
size() //返回栈中元素数目 
top() //返回栈顶元素 

#include<stack>//使用stack时需要的头文件 
stack<int> s;//定义一个int类型的stack

map的用法


 map<int,int> map1;
 map1[1]=2;
 auto iter = map1.find(1);
 if(iter!=map1.end()){
     cout<<iter->second;
 }
 //查找用count,找的到就返回1,否则返回0
cout << map1.count(1) << endl; // 返回1
cout << map1.count(2) << endl; // 返回0

queue的用法

queues主要由成员函数push(),front(),back(),pop()构成。
push()将元素置入queue中。
front()会返回queue内的下一个元素(也就是第一个被置入的元素)
back()会返回queue的最后一个元素(也就是最后一个被插入的元素)
pop()会从queue中移除一个元素。  //这个函数没有返回值;它仅暗示删除元素
size()返回queue长度。
empty()返回queue是否为空。

deque的用法

iqu[ ]:用来访问双向队列中单个的元素。
iqu.front():返回第一个元素的引用。
iqu.back():返回最后一个元素的引用。
iqu.push_front(x):把元素x插入到双向队列的头部。O(1)
iqu.pop_front():弹出双向队列的第一个元素。O(1)
iqu.push_back(x):把元素x插入到双向队列的尾部。O(1)
iqu.pop_back():弹出双向队列的最后一个元素。O(1)
iqu.insert(it,20),O(n)
iqu.erase(it);从it指向的位置删除元素O(n)

int的值域

int max_val = INT_MAX;
int min_val = INT_MIN;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值