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 
#include
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 
using namespace std;
#include 
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
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 
#include
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};
  1. shared_ptr的拷贝
//----------------------test.cpp------------------------
#include 
#include 
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<

栈的用法

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

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

你可能感兴趣的:(C++,shell,容器,c++)