网站制作建设建议兴田德润,如何部署asp网站,谷歌浏览器下载安装2023最新版,佛山新网站建设哪家好要使用std::set对std::vector进行去重操作#xff0c;您可以将向量中的元素插入到集合中#xff0c;因为std::set会自动去除重复元素。然后#xff0c;您可以将集合中的元素重新存回向量中。以下是一个示例代码#xff0c;演示如何使用std::set对std::vector进行去重#…要使用std::set对std::vector进行去重操作您可以将向量中的元素插入到集合中因为std::set会自动去除重复元素。然后您可以将集合中的元素重新存回向量中。以下是一个示例代码演示如何使用std::set对std::vector进行去重
set ——排序去重
#include iostream
#include vector
#include setint main()
{std::vectorint numbers {1, 2, 3, 2, 4, 3, 5, 6, 4};std::cout 去重前的 numbers: ;for (auto i : numbers){std::cout i ;}std::cout std::endl;// 定义一个set 将numbers数据赋值给setset会自动去重并排序如果不想排序就使用 unordered_setstd::setint uniquenumbers(numbers.begin(), numbers.end());std::cout uniquenumbers: ;for (auto i : uniquenumbers){std::cout i ;}std::cout std::endl;numbers.assign(uniquenumbers.begin(), uniquenumbers.end());std::cout 去重后的 numbers: ;for (auto i : numbers){std::cout i ;}std::cout std::endl;return 0;
}运行此代码将输出
即去除重复元素后的向量。
在这个示例中我们首先将向量中的元素插入到std::set中由于std::set会自动去除重复元素所以集合中的元素就是去重后的结果。然后我们使用assign函数将集合中的元素重新存回向量中覆盖原有的元素。最后我们遍历输出去重后的向量。
unordered_set ——不排序去重
请注意使用std::set进行去重会导致元素的顺序发生改变因为std::set会自动对元素进行排序。如果您需要保留原始向量中的元素顺序可以考虑使用std::unordered_set代替std::set但是请注意std::unordered_set不会对元素进行排序。
#include iostream
#include vector
#include set
#include unordered_set
int main() {std::vectorint numbers { 1, 2, 3, 2, 4, 3, 5, 6, 4 };// 使用std::set对向量进行去重std::unordered_setint uniqueNumbers(numbers.begin(), numbers.end());// 将去重后的元素存回向量numbers.assign(uniqueNumbers.begin(), uniqueNumbers.end());// 输出去重后的向量for (const auto num : numbers) {std::cout num ;}std::cout std::endl;return 0;
}
但是会发现 unordered_set 赋值后每次插入值都是插入到了开头。
参考https://blog.csdn.net/qq_32642107/article/details/109152106