C++
C++
液压姬
这个作者很懒,什么都没留下…
展开
-
C++从string中删除所有的某个特定字符
C++从string中删除所有的某个特定字符str.erase(std::remove(str.begin(), str.end(), 'a'), str.end());romove来自<algorithm>作用:在容器中, 在[first, last)之间的所有值等于val的值都会被下一个不等于val的元素覆盖.(除了最后一个元素)返回值:返回一个迭代器 (记作newEnd), 该迭代器指向最后一个未被删除元素的下一个元素, 即相当于容器新的end.不会改变输入vecto原创 2021-04-15 09:50:36 · 3428 阅读 · 0 评论 -
C++获取数组长度的实用方法
#include using namespace std;template int getArrayLen(T& array){//使用模板定义一 个函数getArrayLen,该函数将返回数组array的长度return (sizeof(array) / sizeof(array[0]));}int main(){char a[] = {‘1’,‘2’,‘3’};cout << getArrayLen(a) << endl;return 0;}—.转载 2021-03-24 10:31:07 · 321 阅读 · 0 评论 -
std::move和右值引用
今天无意碰到了这个东西std::move,以前从来没见过。于是乎查找发现了右值引用这种东西。。。首先回顾一下基本知识,原文来自这里1、左值和右值的概念左值是可以放在赋值号左边可以被赋值的值;左值必须要在内存中有实体;右值当在赋值号右边取出值赋给其他变量的值;右值可以在内存也可以在CPU寄存器。一个对象被用作右值时,使用的是它的内容(值),被当作左值时,使用的是它的地址。2、引用引用是C++语法做的优化,引用的本质还是靠指针来实现的。引用相当于变量的别名。引用可以改变指针的指向,还可以转载 2021-01-24 17:47:17 · 228 阅读 · 0 评论 -
map中插入自定义类型的key
struct mycompare{ //写一个仿函数 bool operator()(MyKey key1, MyKey key2){ return key1.mIndex > key2.mIndex; }};void test02(){ map<MyKey, int, mycompare> mymap; //自动排序,自定数据类型,咋排? mymap.insert(make_pair(MyKey(1, 2), 10)); mymap.insert(make_pa原创 2021-01-24 17:46:16 · 646 阅读 · 0 评论 -
错误:Error:未定义标识符“_TCHAR“
原因:缺少头文件解决方案:添加一条 #include <tchar.h>转载自转载 2021-01-21 23:34:23 · 905 阅读 · 0 评论 -
数组指针的三种写法
#include <iostream>using namespace std;//方法一: 直接定义一个数组类型typedef int(ARRAY_INT_10)[10];//方法二:typedef int(*ARRAY_INT_10_P)[10];int main(void){ int array[10]; //array 应该是一个指向int类型指针。 //方法一: //ARRAY_INT_10 *array_10_p = &array; //*arra原创 2021-01-13 10:43:43 · 993 阅读 · 1 评论 -
继承
继承写法//通过继承创建一个新的学生类class Student3 :public Student//指定继承的类型{public: Student3(int id, string name, int score) :Student(id, name)//父类的初始化 { //如果这里没有写父类的初始化,那么会调用父类的无参构造 //不写在上面,写在下面也行: //this->id = id; //this->name = name; this->score =原创 2021-01-11 17:45:53 · 85 阅读 · 0 评论 -
+=,-=重载
using namespace std;class Complex{public: Complex(int a, int b) { this->a = a; this->b = b; } friend Complex & operator+=(Complex &c1, Complex &c2); friend Complex &operator-=(Complex &c1, Complex &c2); Complex原创 2021-01-11 17:24:57 · 287 阅读 · 0 评论 -
重载++
using namespace std;class Complex{public: Complex(int a, int b) { this->a = a; this->b = b; } friend Complex & operator++(Complex &c); friend const Complex operator++(Complex &c1, int); Complex &operator++() { this-原创 2021-01-11 17:24:50 · 132 阅读 · 0 评论 -
+,-重载
class Complex{public: Complex(int a, int b) { this->a = a; this->b = b; }//操作符重载写在全局 friend Complex operator+(Complex &c1, Complex &c2); friend Complex operator-(Complex &c1, Complex &c2);//操作符重载写在类里 Complex operator+(C原创 2021-01-11 17:24:34 · 125 阅读 · 0 评论 -
<<,>>重载
using namespace std;class Complex{public: Complex(int a, int b) { this->a = a; this->b = b; } void printComplex() { cout << "( " << this->a << ", " << this->b << "i )" << endl; } friend ost原创 2021-01-11 17:24:26 · 499 阅读 · 0 评论 -
=操作符重载(指针型)
#include <iostream>#include <cstring>using namespace std;class Student {public: Student() { this->id = 0; this->name = nullptr; } //注意构造函数重新分配内存 Student(int id, char *name) { this->id = id;原创 2021-01-11 17:24:16 · 235 阅读 · 2 评论 -
重载[](自定义数组类)
.h#include <iostream>using namespace std;class MyArray{public: MyArray(); MyArray(int len); MyArray(const MyArray &another); ~MyArray(); void setData(int index, int data); int getData(int index); int getLen() const ; MyArray&原创 2021-01-11 17:24:05 · 173 阅读 · 0 评论 -
重载()(仿函数)
using namespace std;class Sqr{public: Sqr(int a) { this->a = a; } int operator()(int value) { return value * value; } int operator()(int value1, int value2) { return value1 * value2; }private: int a;};void func(int a){}in原创 2021-01-11 17:23:47 · 156 阅读 · 0 评论 -
函数指针的三种定义方式
using namespace std;int func(int a, int b){ cout << "func(int, int)" << endl; return 0;}int func(int a, int b, int c){ cout << "func(int, int,int )" << endl; return 0;}//1 . 定义一种函数类型typedef int(MY_FUNC)(int, int);原创 2021-01-11 17:23:30 · 397 阅读 · 0 评论 -
explicit
原文在这里在c++种explicit关键字只能用来修饰构造函数。使用explicit可以禁止编译器自动调用拷贝初始化,还可以禁止编译器对拷贝函数的参数进行隐式转换。什么是拷贝初始化?举个例子:现在我们不使用explicit关键字看看会发生什么?我们发现下面这个代码明明我们给函数f()传递的参数是一个整数,但是编译器却自动调用了类A的构造函数,这种就叫做拷贝初始化。这是超出预期的。如果你不希望这样那么请在构造函数前面加上explicit关键词禁止编译器这种自动调用拷贝初始化的行为,即explicit转载 2021-01-11 09:08:22 · 100 阅读 · 0 评论 -
数组引用做函数的形参
今天码代码发现数组引用做函数形参总是报错,想着,数组名字不就是数组的首地址,那应该用指针做形参,加上引用的话,就应该的指针引用嘛。int set_print(int* &t){结果凉凉那逼急了用autoint set_print(auto &t){结果通了,但其实这样是不合法的,编译器提示auto不能做形参。。。用auto出来的结果debug查一下类型发现是int (&)[5]int set_print(int (&t)[5]){不但要加括原创 2021-01-06 20:15:50 · 873 阅读 · 0 评论 -
C++实现切分字符串
leetcode71遇到的stringstream#include <sstream>#include "string"using namespace std;stringstream is(path);string tmp;while(getline(is,tmp,'/'))//用"/"切分{cout<<tmp<<endl;{原创 2020-10-17 16:23:48 · 136 阅读 · 0 评论