20240513,常用算法(查找,排序,拷贝替换)

做着一些和考试无关的事情

常用查找算法——续

FIND_IF 

find_if  //按条件查找元素,返回迭代器POS / END()
find_if(beg,end,_Fred)    _Fred函数或谓词(返回BOOL类型的仿函数)

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
//find_if  //按条件查找元素    find_if(beg,end,_Fred)_Fred函数或谓词(返回BOOL类型的仿函数)
class Greater {
public:
	bool operator()(int val) {
		return val>5;
	}
};
class Person {
public:
	Person(string n, int a) {
		this->_name = n;
		this->_age = a;
	}
	bool operator==(const Person& p) {
		if (this->_name == p._name && this->_age == p._age) {
			return true;
		}
		else {
			return false;
		}
	}
	string _name;
	int _age;
};
class Greater02 {
public:
	bool operator()(const Person &p) {
		return p._age==9;
	}
};
void test01() {
	vector<int>v;
	for (int i = 0; i < 10; i++) {
		v.push_back(i);
	}
	vector<int>::iterator it=find_if(v.begin(), v.end(), Greater());
	if (it == v.begin()) {
		cout << " no find" << endl;
	}
	else {
		cout << "find :  " <<*it<< endl;
	}
}
void test02() {
	vector<Person>p;
	Person p0("fsdef", 23);
	Person p1("复合工艺", 28);
	Person p2("粉色", 9);
	Person p3("得分·", 45);
	Person p4("啊上网服务", 53);
	p.push_back(p0);
	p.push_back(p1);
	p.push_back(p2);
	p.push_back(p3);
	p.push_back(p4);
	vector<Person>::iterator it = find_if(p.begin(), p.end(), Greater02());
	if (it == p.begin()) {
		cout << " no find" << endl;
	}
	else {
		cout << "find :  " << it->_name<<it->_age<< endl;
	}
}
int main() {
	test01();
	test02();
	return 0;
}
ADJACENT_FIND

adjacent_find  //查找相邻重复元素 
adjacent_find(begin,end)返回相邻元素的第一个的POS

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
//adjacent_find  //查找相邻重复元素   adjacent_find(begin,end)返回相邻元素的第一个的POS
class Person {
public:
	Person(string n, int a) {
		this->_name = n;
		this->_age = a;
	}
	bool operator==(const Person& p) {
		if (this->_name == p._name && this->_age == p._age) {
			return true;
		}
		else {
			return false;
		}
	}
	string _name;
	int _age;
};
void test01() {
	vector<int>v;
	v.push_back(0);
	v.push_back(1);
	v.push_back(0);
	v.push_back(3);
	v.push_back(3);
	vector<int>::iterator it = adjacent_find(v.begin(), v.end());
	if (it == v.begin()) {
		cout << " no find" << endl;
	}
	else {
		cout << "find :  " <<*it<< endl;
	}
}
void test02() {
	vector<Person>p;
	Person p1("复合工艺", 28);
	Person p2("粉色", 9);
	Person p3("得分·", 45);
	p.push_back(p2);
	p.push_back(p1);
	p.push_back(p2);
	p.push_back(p3);
	p.push_back(p3);
	vector<Person>::iterator it = adjacent_find(p.begin(), p.end());
	if (it == p.begin()) {
		cout << " no find" << endl;
	}
	else {
		cout << "find :  " << it->_name<<it->_age<< endl;
	}
}
int main() {
	test01();
	test02();
	return 0;
}
BINARY_SEARCH

binary_search  //二分法查找 
bool binary_search(beg,end,value)   //无序序列中不可用

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
//binary_search  //二分法查找   bool binary_search(beg,end,value)//无序序列中不可用

void test01() {
	vector<int>v;
	for (int i = 0; i < 10; i++) {
		v.push_back(i);
	}
	if (binary_search(v.begin(),v.end(),7)) {
		cout << " no find" << endl;
	}
	else {
		cout << "find :  " << endl;
	}
}
void test02() {
	
}
int main() {
	test01();
	test02();
	return 0;
}
COUNT

count  //统计元素个数   count(beg,end,value)

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
//count  //统计元素个数   count(beg,end,value)
class Person {
public:
	Person(string n, int a) {
		this->_name = n;
		this->_age = a;
	}
	bool operator==(const Person& p) {
		if (this->_name == p._name && this->_age == p._age) {
			return true;
		}
		else {
			return false;
		}
	}
	string _name;
	int _age;
};
void test01() {
	vector<int>v;
	v.push_back(0);
	v.push_back(0);
	v.push_back(0);
	v.push_back(3);
	v.push_back(3);
	int it=count(v.begin(), v.end(), 0);
	if (it==0) {
		cout << " no find" << endl;
	}
	else {
		cout << "find :  " <<it<<"   ge" << endl;
	}
}
void test02() {
	vector<Person>p;
	Person p1("复合工艺", 28);
	Person p2("粉色", 9);
	Person p3("得分·", 45);
	p.push_back(p2);
	p.push_back(p3);
	p.push_back(p2);
	p.push_back(p3);
	p.push_back(p3);
	int it = count(p.begin(), p.end(), p1);
	if (it == 0) {
		cout << " no find" << endl;
	}
	else {
		cout << "find :  " << it << "   ge" << endl;
	}
}
int main() {
	test01();
	test02();
	return 0;
}
COUNT_IF

count_if  //按条件统计元素个数    count_if(beg,end,——Pred)

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
//count_if  //按条件统计元素个数    count_if(beg,end,_Pred)
class grater {
public:
	bool operator()(int val) {
		return val > 5;
	}
};

class Person {
public:
	Person(string n, int a) {
		this->_name = n;
		this->_age = a;
	}
	/*bool operator==(const Person& p) {
		if (this->_name == p._name && this->_age == p._age) {
			return true;
		}
		else {
			return false;
		}
	}*/
	string _name;
	int _age;
};
class grater02 {
public:
	bool operator()(const Person &p) {
		return p._age > 5;
	}
};
void test01() {
	vector<int>v;
	for (int i = 0; i < 10; i++) {
		v.push_back(i);
	}
	int it=count_if(v.begin(), v.end(), grater());
	if (it==0) {
		cout << " no find" << endl;
	}
	else {
		cout << "find :  " <<it<<"   ge" << endl;
	}
}
void test02() {
	vector<Person>p;
	Person p2("粉色", 4);
	Person p3("得分·", 45);
	p.push_back(p2);
	p.push_back(p3);
	p.push_back(p2);
	p.push_back(p3);
	p.push_back(p3);
	int it = count_if(p.begin(), p.end(), grater02());
	if (it == 0) {
		cout << " no find" << endl;
	}
	else {
		cout << "find :  " << it << "   ge" << endl;
	}
}
int main() {
	test01();
	test02();
	return 0;
}

常用排序算法

sort  //对容器内元素进行排序
random_shuffle  //洗牌,指定范围内顺序变随机
merge  //容器元素合并,并存储道另一容器中
reverse  //反转指定范围的元素 

SORT

sort  //对容器内元素进行排序   sort(beg,end,_Pred/谓词)

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
/*
sort  //对容器内元素进行排序
sort(beg,end,_Pred/谓词)
*/
class grater {
public:
	bool operator()(int v1,int v2) {
		return v1>v2;
	}
};

class Person {
public:
	Person(string n, int a) {
		this->_name = n;
		this->_age = a;
	}
	/*bool operator==(const Person& p) {
		if (this->_name == p._name && this->_age == p._age) {
			return true;
		}
		else {
			return false;
		}
	}*/
	string _name;
	int _age;
};
class grater02 {
public:
	bool operator()(const Person &p1,const Person &p2) {
		return p1._age > p2._age;
	}
};
void test01() {
	vector<int>v;
	for (int i = 0; i < 10; i++) {
		v.push_back(i);
	}
	for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
	sort(v.begin(), v.end(), grater());
	for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
	v.push_back(3);
	sort(v.begin(), v.end(), greater<int>());
	for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
}
void test02() {
	vector<Person>v;
	Person p0("fsdef", 23);
	Person p1("复合工艺", 28);
	Person p2("粉色", 9);
	Person p3("得分·", 45);
	Person p4("啊上务", 53);
	v.push_back(p0);
	v.push_back(p1);
	v.push_back(p2);
	v.push_back(p3);
	v.push_back(p4);
	for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) {
		cout <<"name: " << it->_name << "\tage:" << it->_age << endl;
	}
	cout << endl;
	sort(v.begin(), v.end(), grater02());
	for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) {
		cout << "name: " << it->_name << "\tage:" << it->_age << endl;
	}
	cout << endl;
}
int main() {
	test01();
	test02();
	return 0;
}
RANDOM_SHUFFLE

random_shuffle  //洗牌,指定范围内顺序变随机   
random_shuffle(beg,end)——加上随机数种子

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
#include<ctime>
using namespace std;

class Person {
public:
	Person(string n, int a) {
		this->_name = n;
		this->_age = a;
	}
	string _name;
	int _age;
};
void test01() {
	srand((unsigned int)time(NULL));//加上随机数种子
	vector<int>v;
	for (int i = 0; i < 10; i++) {
		v.push_back(i);
	}
	for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
	random_shuffle(v.begin(), v.end());
	for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
	
}
void test02() {
	srand((unsigned int)time(NULL));//加上随机数种子
	vector<Person>v;
	Person p0("fsdef", 2);
	Person p1("复合工艺", 28);
	Person p2("粉色", 29);
	Person p3("得分·", 45);
	Person p4("啊上务", 53);
	v.push_back(p0);
	v.push_back(p1);
	v.push_back(p2);
	v.push_back(p3);
	v.push_back(p4);
	for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) {
		cout <<"name: " << it->_name << "\tage:" << it->_age << endl;
	}
	cout << endl;
	random_shuffle(v.begin(), v.end());
	for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) {
		cout << "name: " << it->_name << "\tage:" << it->_age << endl;
	}
	cout << endl;
}
int main() {
	test01();
	test02();
	return 0;
}
MERGE

merge  //容器元素合并,并存储道另一容器中           PS:两个容器必须是有序的
merge(v1.beg ,v1.end ,v2.beg ,v2.end ,iterator dest)  iterator dest目标容器开始迭代器
自定义类型失败

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

void test01() {
	vector<int>v;
	vector<int>v1;
	vector<int>vv;
	for (int i = 0; i < 4; i++) {
		v.push_back(i);
	}
	for (int i = 0; i < 6; i++) {
		v1.push_back(i+7);
	}
	vv.resize(v.size() + v1.size());  //先开辟空间
	merge(v.begin(), v.end(), v1.begin(), v1.end(), vv.begin());
	for (vector<int>::iterator it = vv.begin(); it != vv.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
}

int main() {
	test01();
	return 0;
}
REVERSE

reverse  //反转指定范围的元素  reverse(beg,end)

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

class Person {
public:
	Person() {};
	Person(string n, int a) {
		this->_name = n;
		this->_age = a;
	}
	string _name;
	int _age;
};
void test01() {
	vector<int>v;
	for (int i = 0; i < 10; i++) {
		v.push_back(i);
	}
	for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
		cout << *it << " ";
	}
	cout << endl << "revers after:" << endl;
	reverse(v.begin(), v.end());
	for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
}
void test02() {
	vector<Person>v;
	Person p0("fsdef", 2);
	Person p1("复合工艺", 28);
	Person p2("粉色", 29);
	Person p3("得分·", 45);
	Person p4("啊上务", 53);
	v.push_back(p0);
	v.push_back(p1);
	v.push_back(p2);
	v.push_back(p3);
	v.push_back(p4);
	for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) {
		cout << "name: " << it->_name << "\tage:" << it->_age << endl;
	}
	cout << endl << "revers after:" << endl;
	reverse(v.begin(), v.end());
	for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) {
		cout << "name: " << it->_name << "\tage:" << it->_age << endl;
	}
}
int main() {
	test01();
	test02();
	return 0;
}

常用拷贝和替换算法

copy  //容器内指定范围拷贝到另一容器中
replace  //指定范围 旧元素改为新元素
replace_if  //指定范围 旧元素替换为新元素
swap  //互换两个容器元素 

COPY

copy  //容器内指定范围拷贝到另一容器中      copy(beg,end,iterator dest) ---iterator dest目标起始迭代器

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
/*
copy(beg,end,iterator dest)
*/
void myprint(int val) {
	cout << val << "  ";
}
void test01() {
	vector<int>v;
	vector<int>v2;
	for (int i = 0; i < 10; i++) {
		v.push_back(i);
	}
	v2.resize(v.size());//开辟空间
	copy(v.begin(), v.end(),v2.begin());
	for_each(v2.begin(), v2.end(), myprint);
	cout << endl;
}
void test02() {
	
}
int main() {
	test01();
	test02();
	return 0;
}
REPLACE

replace  //指定范围 旧元素改为新元素     replace(beg,end,old val,new val)

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
/*
replace(beg,end,old val,new val)
*/
class Person {
public:
	Person() {};
	Person(string n, int a) {
		this->_name = n;
		this->_age = a;
	}
	bool operator==(const Person &p) {
		if (this->_name == p._name && this->_age == p._age) {
			return true;
		}
		else {
			return false;
		}
	}
	string _name;
	int _age;
};
void myprint(int val) {
	cout << val << "  ";
}
void myprint02(Person p) {
	cout << "name: " << p._name << "\tage:" << p._age << endl;
}
void test01() {
	vector<int>v;
	for (int i = 0; i < 10; i++) {
		int t = i;
		if ((t % 2) == 0) {
			v.push_back(i);
		}
		else {
			v.push_back(0);
		}
	}
	for_each(v.begin(), v.end(), myprint);
	cout << endl;
	replace(v.begin(), v.end(),0,3000);
	for_each(v.begin(), v.end(), myprint);
	cout << endl;
}
void test02() {
	vector<Person>v;
	Person p2("粉色", 29);
	Person p3("得  分·", 45);
	v.push_back(p2);
	v.push_back(p2);
	v.push_back(p3);
	for_each(v.begin(), v.end(), myprint02);
	cout << endl;
	replace(v.begin(), v.end(), p2, p3);
	for_each(v.begin(), v.end(), myprint02);
	cout << endl;
}
int main() {
	test01();
	test02();
	return 0;
}
REPLACE_IF

replace_if  //指定范围 旧元素替换为新元素        replace_if(beg,end,_pred,new val) 

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
/*
replace_if(beg,end,_pred,new val)
*/
class Person {
public:
	Person(string n, int a) {
		this->_name = n;
		this->_age = a;
	}
	bool operator==(const Person &p) {
		if (this->_name == p._name && this->_age == p._age) {
			return true;
		}
		else {
			return false;
		}
	}
	string _name;
	int _age;
};
void myprint(int val) {
	cout << val << "  ";
}
class greater5 {
public:
	bool operator()(int val) {
		return val > 5;
	}
};
class greater30 {
public:
	bool operator()(Person &p2) {
		return  p2._age<30;
	}
};
void myprint02(Person p) {
	cout << "name: " << p._name << "\tage:" << p._age << endl;
}
void test01() {
	vector<int>v;
	for (int i = 0; i < 10; i++) {
		v.push_back(i);
	}
	for_each(v.begin(), v.end(), myprint);
	cout << endl;
	replace_if(v.begin(), v.end(), greater5(), 3000);
	for_each(v.begin(), v.end(), myprint);
	cout << endl;
}
void test02() {
	vector<Person>v;
	Person p2("粉色", 29);
	Person p3("得  分·", 45);
	v.push_back(p2);
	v.push_back(p2);
	v.push_back(p3);
	for_each(v.begin(), v.end(), myprint02);
	cout << endl;
	replace_if(v.begin(), v.end(), greater30(), p3);
	for_each(v.begin(), v.end(), myprint02);
	cout << endl;
}
int main() {
	test01();
	test02();
	return 0;
}
SWAP

swap  //互换两个容器元素   swap(container c1,container c2)

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
/*
replace_if(beg,end,_pred,new val)
*/
void myprint(int val) {
	cout << val << "  ";
}
void test01() {
	vector<int>v;
	vector<int>v1;
	for (int i = 0; i < 10; i++) {
		v.push_back(i);
		if(i<5){
			v1.push_back(0);
		}
	}
	cout << "swap before:" << endl;
	for_each(v.begin(), v.end(), myprint);
	cout << endl;
	for_each(v1.begin(), v1.end(), myprint);
	cout << endl;
	cout << "swap after:" << endl;
	swap(v, v1);
	for_each(v.begin(), v.end(), myprint);
	cout << endl;
	for_each(v1.begin(), v1.end(), myprint);
	cout << endl;
}
void test02() {
	
}
int main() {
	test01();
	test02();
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/622899.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

目标检测——YOLOv9算法解读

论文&#xff1a;YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information (2024.2.21) 作者&#xff1a;Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao 链接&#xff1a;https://arxiv.org/abs/2402.13616 代码&#xff1a;https://github.com/W…

kubernetes集群svc的代理模式-iptables修改为ipvs

一、概述\ 我们都知道&#xff0c;k8s集群的外部网络分发&#xff0c;借助kube-proxy组件来完成&#xff1b; 问题&#xff1a;我们为什么要将代理模式修改为ipvs而不继续使用iptables呐&#xff1f; 1&#xff0c;iptables底层使用四表五链完成网络代理&#xff0c;效率比较低…

HackCar – 汽车系统的攻击和防御游乐场

现代汽车配备的微控制器使用控制器局域网 (CAN) 来执行安全和豪华功能。 然而&#xff0c;由于CAN网络缺乏速度控制等线控系统的安全性&#xff0c;因此可能会通过消息注入攻击来 劫持车辆&#xff0c;从而造成生命危险。 尽管研究人员努力提出入侵检测、加密和身份验证等解…

研究幽灵漏洞及其变种(包括但不限于V1-V5)的攻击原理和基于Github的尝试

一、研究幽灵漏洞及其变种(包括但不限于V1-V5)的攻击原理 1.1 基本漏洞原理(V1) 幽灵漏洞的基本原理是由于glibc库中的gethostbyname()函数在处理域名解析时,调用了__nss_hostname_digits_dots()函数存在缓冲区溢出漏洞。 具体来说,__nss_hostname_digits_dots()使用一个固定…

牛客网刷题 | BC82 乘法表

目前主要分为三个专栏&#xff0c;后续还会添加&#xff1a; 专栏如下&#xff1a; C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读&#xff01; 初来乍到&#xff0c;如有错误请指出&#xff0c;感谢&#xff01; 描述 输出九九乘法表&am…

[GWCTF 2019]re3

int mprotect(void *addr, size_t len, int prot);实现内存区域的动态权限控制: addr&#xff1a;要修改保护权限的内存区域的起始地址。len&#xff1a;要修改保护权限的内存区域的长度&#xff08;以字节为单位&#xff09;。prot&#xff1a;要设置的新的保护权限&#xff…

宠物管理系统带万字文档

文章目录 宠物管理系统一、项目演示二、项目介绍三、19000字论文参考四、部分功能截图五、部分代码展示六、底部获取项目源码和万字论文参考&#xff08;9.9&#xffe5;带走&#xff09; 宠物管理系统 一、项目演示 宠物管理系统 二、项目介绍 基于springbootvue的前后端分离…

CentOs搭建Kubernetes集群

kubeadm minikube 还是太“迷你”了&#xff0c;方便的同时也隐藏了很多细节&#xff0c;离真正生产环境里的计算集群有一些差距&#xff0c;毕竟许多需求、任务只有在多节点的大集群里才能够遇到&#xff0c;相比起来&#xff0c;minikube 真的只能算是一个“玩具”。 Kuber…

如何利用甘特图来提高资源的是使用效率?

在项目管理中&#xff0c;甘特图是一种常用的工具&#xff0c;用于规划和跟踪项目进度。它通过条形图的形式展示项目的时间表和任务依赖关系&#xff0c;帮助项目经理和团队成员清晰地了解项目的时间线和进度。通过合理利用甘特图&#xff0c;可以显著提高资源的使用效率&#…

【C++】学习笔记——继承_1

文章目录 十一、模板进阶5. 模板的优缺点 十二、继承1. 继承的概念及定义2. 基类和派生类对象赋值转换3. 继承中的作用域4. 派生类的默认成员函数 未完待续 十一、模板进阶 5. 模板的优缺点 优点&#xff1a; 模板复用了代码&#xff0c;节省资源&#xff0c;更快的迭代开发&a…

网络安全快速入门(十二) linux的目录结构

我们前面已经了解了基础命令&#xff0c;今天我们来讲讲linux中的目录结构&#xff0c;我们在了解linux的目录结构之前&#xff0c;我们先与Windows做一个对比 12.1linux和windows的目录结构对比 在之前认识liunx的章节中&#xff0c;我们已经简单说明了linux和window的目录结构…

一文入门DNS

概述 DNS是一个缩写&#xff0c;可以代表Domain Name System&#xff0c;域名系统&#xff0c;是互联网的一项基础服务。也可以代表Domain Name Server&#xff0c;域名服务器&#xff0c;是进行域名和与之相对应的IP地址相互转换的服务器。DNS协议则是用来将域名转换为IP地址…

blender cell fracture制作破碎效果,将一个模型破碎成多个模型

效果&#xff1a; 1.打开编辑-》偏好设置。搜索cell&#xff0c;勾选上如下图所示的&#xff0c;然后点击左下角菜单里的保存设置。 2.选中需要破碎的物体&#xff0c;按快捷键f3&#xff08;快速搜索插件&#xff09;&#xff0c;搜索cell fracture。 3.调整自己需要的参数配置…

机器学习之sklearn基础教程:新手入门指南

引言 在机器学习领域&#xff0c;sklearn&#xff08;Scikit-learn&#xff09;是一个广受欢迎的开源库&#xff0c;它为各种常见的机器学习算法提供了高效的实现。对于初学者来说&#xff0c;sklearn 提供了一个简单且易于上手的工具&#xff0c;可以用来实现分类、回归、聚类…

git使用及github

文章目录 操作命令基本组成框架在开发中git分支的重要性 github的使用将本地仓库关联到远程仓库将远程仓库关联到本地和拉取指定分支、切换远程分支提交本地仓库到远程仓库修改分支名称 保存当前工作切换分支将别的分支修改转移到自己的分支远程删除分支后本地git branch -a依然…

MongoDB事务的理解和思考

3.2版本开始引入Read Concern&#xff0c;解决了脏读&#xff0c;支持Read Commit 3.6版本引入Session&#xff0c;支持多个请求共享上下文&#xff0c;为后续的事务支持做准备 4.0支持多行事务&#xff0c;但4.0的事务只是个过渡的版本 4.2开始支持多文档事务 1. Mongo的架…

具备教学意义的实操(用栈实现队列)

具备教学意义的实操&#xff08;用队列实现栈&#xff09;-CSDN博客https://blog.csdn.net/Jason_from_China/article/details/138729955 具备教学意义的实操&#xff08;用栈实现队列&#xff09; 题目 232. 用栈实现队列 - 力扣&#xff08;LeetCode&#xff09; ​ 逻辑​​…

一、VIsual Studio下的Qt环境配置(Visual Studio 2022 + Qt 5.12.10)

一、下载编译器Visual Studio2022和Qt 5.12.10 Visual Studio 2022 社区版就够学习使用了 Qt5.12.10 安装教程网上搜&#xff0c;一大堆 也很简单&#xff0c;配置直接选默认&#xff0c;路径留意一下即可 二、配置环境 Ⅰ&#xff0c;配置Qt环境变量 系统变量下的Path&a…

C++的数据结构(五):树和存储结构及示例

在计算机科学中&#xff0c;树是一种抽象数据类型&#xff08;ADT&#xff09;或是实现这种抽象数据类型的数据结构&#xff0c;用来模拟具有树状结构性质的数据集合。这种数据结构以一系列连接的节点来形成树形结构。在C中&#xff0c;树的概念和存储结构是实现各种复杂算法和…

Golang | Leetcode Golang题解之第87题扰乱字符串

题目&#xff1a; 题解&#xff1a; func isScramble(s1, s2 string) bool {n : len(s1)dp : make([][][]int8, n)for i : range dp {dp[i] make([][]int8, n)for j : range dp[i] {dp[i][j] make([]int8, n1)for k : range dp[i][j] {dp[i][j][k] -1}}}// 第一个字符串从 …