c++ string的erase删除方法
#include<iostream>
#include<string>
using namespace std;
int main(){
string str = "hello c++! +++";
// 从位置pos=10处开始删除,直到结尾
// 即: " +++"
str.erase(10);
cout << '-' << str << '-' << endl;
// 从位置pos=6处开始,删除4个字符
// 即: "c++!"
str.erase(6, 4);
cout << '-' << str << '-' << endl;
return 0;
}
vector erase()用法
iterator erase (const_iterator position);
iterator erase (const_iterator first, const_iterator last);
vector中删除一个元素(position),或者范围元素( [first, last) )
二叉树定义
struct TreeNode{
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x): val(x),left(NULL),right(NULL){}
};
链表定义
struct ListNode{
int val;
ListNode *next;
ListNode(int x): val(x);next(NULL){}
};
sort函数中cmp函数使用
用法1
vector<int> vec;
bool cmp(const T a, const T b){
return a > b;
}
sort(vec.begin(), vec.end(), cmp);
用法2
class Solution {
public:
static bool cmp(const vector<int>&a,const vector<int>&b){
if(a[0]==b[0])return a[1]<b[1];
return a[0]>b[0];
}
vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
vector<vector<int>>res;
sort(people.begin(),people.end(),cmp);
for(int i=0;i<people.size();i++){
res.insert(res.begin()+people[i][1],people[i]);
}
return res;
}
};
这里cmp的写法需要加static
list底层是链表实现,插入效率比vector高的多
// 版本二
class Solution {
public:
static bool cmp(const vector<int>&a,const vector<int>&b){
if(a[0]==b[0])return a[1]<b[1];
return a[0]>b[0];
}
vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
list<vector<int>>que;
sort(people.begin(),people.end(),cmp);
for(int i=0;i<people.size();i++){
list<vector<int>>::iterator it=que.begin();
int one=people[i][1];
while(one--){
it++;
}
que.insert(it,people[i]);
}
return vector<vector<int>>(que.begin(),que.end());
}
};
迭代器it写法
list<vector<int>> :: iterator it=que.begin();
数字转字符串 to_string()
字符串转数字 stoi(strNum);
#include <iostream>
#include <sstream>
int main(int argc, char *argv[])
{
for(int i = 0; i < 5; i++)
{
std::stringstream ss;
std::string strNum = std::to_string(i);
int num = std::stoi(strNum);
std::cout << num * num << " ";
}
std::cout << std::endl;
substr()
c++读取空格如何
int main() {
string s;
getline(cin,s);
reverse(s.begin(), s.end());
cout<<s;
}
getline 函数如下所示:
getline(cin, inputLine);
其中 cin 是正在读取的输入流,而 inputLine 是接收输入字符串的 string 变量的名称。读取到回车才会截止。
c++输出小数点几位
// This program demonstrates how the setprecision manipulator
// affects the way a floating-point value is displayed.
#include <iostream>
#include <iomanip> // Header file needed to use setprecision
using namespace std;
int main()
{
double number1 = 132.364, number2 = 26.91;
double quotient = number1 / number2;
cout << quotient << endl;
cout << setprecision(5) << quotient << endl;
cout << setprecision(4) << quotient << endl;
cout << setprecision(3) << quotient << endl;
cout << setprecision(2) << quotient << endl;
cout << setprecision(1) << quotient << endl;
return 0;
}
输出
4.91877
4.9188
4.919
4.92
4.9
5