C++ 去除重复项且获取到不重复部分
2021/12/15 17:17:25
本文主要是介绍C++ 去除重复项且获取到不重复部分,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目的
假设有这一个需求。
去重复并获取独立部分
例如下面两个
1.字符串"1233214" -> "4"
2.字符串数组{ "1","2","3","3","2","1","4" } -> { "4" }
很直白,不多说。
上代码
完整代码
#include <iostream> #include <string> #include <vector> #include <list> #include <map> // 去重复获取独立部分 // 1.字符串"1233214" -> "4" // 2.字符串数组{ "1","2","3","3","2","1","4" } -> { "4" } template <typename MajorType, typename MinorType> MajorType removeRepeat(MajorType& src) { MajorType result_vec = MajorType(); if (src.empty()) return result_vec; const int _ONE = 1; std::map<MinorType, int> tmp_map; for (auto itor = src.begin(); itor != src.end(); ++itor) { ++tmp_map[*itor]; } for (auto itor = tmp_map.begin(); itor != tmp_map.end(); ++itor) { if ((*itor).second == _ONE){ result_vec.push_back((*itor).first); } } return result_vec; } int main(int argc, char **argv) { std::cout << "将要去重的字符串数组原型[1,2,3,3,2,1,4] or 字符串原型1233214" << std::endl; // vector容器类去重 std::vector<std::string> test_vec; test_vec.push_back("1"); test_vec.push_back("2"); test_vec.push_back("3"); test_vec.push_back("3"); test_vec.push_back("2"); test_vec.push_back("1"); test_vec.push_back("4"); std::vector<std::string> resut_vec = removeRepeat<std::vector<std::string>, std::string>(test_vec); std::cout << "【vector】 \t去除结果:"; for (auto item : resut_vec) { std::cout << item << " "; } std::cout << std::endl; // list容器类去重 std::list<std::string> test_list; test_list.push_back("1"); test_list.push_back("2"); test_list.push_back("3"); test_list.push_back("3"); test_list.push_back("2"); test_list.push_back("1"); test_list.push_back("4"); std::list<std::string> resut_list = removeRepeat<std::list<std::string>, std::string>(test_list); std::cout << "【list】 \t去除结果:"; for (auto item : resut_list) { std::cout << item << " "; } std::cout << std::endl; // string 类型去重 std::string test_string; test_string += std::string("1"); test_string += std::string("2"); test_string += std::string("3"); test_string += std::string("3"); test_string += std::string("2"); test_string += std::string("1"); test_string += std::string("4"); std::string resut_string = removeRepeat<std::string, char>(test_string); std::cout << "【string】 \t去除结果:" << resut_string; std::cout << std::endl; return 0; }
调试结果:
_End
完事儿。
这篇关于C++ 去除重复项且获取到不重复部分的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24怎么切换 Git 项目的远程仓库地址?-icode9专业技术文章分享
- 2024-12-24怎么更改 Git 远程仓库的名称?-icode9专业技术文章分享
- 2024-12-24更改 Git 本地分支关联的远程分支是什么命令?-icode9专业技术文章分享
- 2024-12-24uniapp 连接之后会被立马断开是什么原因?-icode9专业技术文章分享
- 2024-12-24cdn 路径可以指定规则映射吗?-icode9专业技术文章分享
- 2024-12-24CAP:Serverless?+AI?让应用开发更简单
- 2024-12-23新能源车企如何通过CRM工具优化客户关系管理,增强客户忠诚度与品牌影响力
- 2024-12-23原创tauri2.1+vite6.0+rust+arco客户端os平台系统|tauri2+rust桌面os管理
- 2024-12-23DevExpress 怎么实现右键菜单(Context Menu)显示中文?-icode9专业技术文章分享
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享