std::vector 分割 std::vector 子集
时间: 2024-05-08 16:13:39 浏览: 258
C++ Vector用法详解
5星 · 资源好评率100%
std::vector是C++标准库中的一个容器类,它可以动态地调整存储空间大小,并且能够自动处理内存分配和释放。对于分割std::vector成子集,我们可以使用vector的迭代器和算法库中的函数来实现。以下是分割std::vector的两种常用方法:
方法一:使用std::partition函数将vector分割成两个子集,满足某个特定的条件
```c++
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
std::vector<int> vec = {1, 2, 3, 4, 5, 6, 7, 8};
auto it = std::partition(vec.begin(), vec.end(), [](int i){return i%2==0;});
std::vector<int> even_vec(vec.begin(), it);
std::vector<int> odd_vec(it, vec.end());
for(auto i : even_vec)
std::cout << i << " ";
std::cout << std::endl;
for(auto i : odd_vec)
std::cout << i << " ";
std::cout << std::endl;
return 0;
}
```
方法二:使用std::copy_if函数将vector中满足某个特定条件的元素复制到另一个vector中
```c++
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
std::vector<int> vec = {1, 2, 3, 4, 5, 6, 7, 8};
std::vector<int> even_vec;
std::copy_if(vec.begin(), vec.end(), std::back_inserter(even_vec), [](int i){return i%2==0;});
std::vector<int> odd_vec;
std::copy_if(vec.begin(), vec.end(), std::back_inserter(odd_vec), [](int i){return i%2!=0;});
for(auto i : even_vec)
std::cout << i << " ";
std::cout << std::endl;
for(auto i : odd_vec)
std::cout << i << " ";
std::cout << std::endl;
return 0;
}
```
阅读全文