std::vector
时间: 2023-09-07 13:11:06 浏览: 51
std::vector 是 C++ STL(标准模板库)中的一个容器,它可以存储任意类型的数据。它的特点是可以动态地调整容器的大小,可以在容器的任何位置插入或删除元素,支持随机访问,同时还有许多其他有用的方法。使用 std::vector 需要包含头文件 <vector>。下面是一个简单的示例:
```
#include <vector>
#include <iostream>
int main() {
std::vector<int> v{1, 2, 3, 4, 5};
for (int i = 0; i < v.size(); i++) {
std::cout << v[i] << " ";
}
std::cout << std::endl;
v.push_back(6);
for (int i = 0; i < v.size(); i++) {
std::cout << v[i] << " ";
}
std::cout << std::endl;
v.pop_back();
for (int i = 0; i < v.size(); i++) {
std::cout << v[i] << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果为:
```
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5
```
相关问题
std::vector 分割 std::vector 子集
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;
}
```
std::vector如何追加std::vector
可以使用`insert()`函数或者`resize()`函数来追加`std::vector`。其中,`insert()`函数可以在任意位置插入元素,而`resize()`函数只能在末尾插入元素。下面分别举例说明:
引用中的构造函数部分介绍了如何构造一个空的`vector`和一个包含指定数量的元素的`vector`。可以使用这些构造函数创建一个空的`vector`或者包含若干个指定值的`vector`。例如:
```c++
std::vector<std::vector<int>> vec1; // 创建一个空的vector
std::vector<std::vector<int>> vec2(3, std::vector<int>(4, 1)); // 创建一个由3个vector构成,每个vector包含4个值为1的int值
```
1.使用`insert()`函数追加`std::vector`[^1]
```c++
std::vector<std::vector<int>> vec{{1,2,3},{4,5,6}};
std::vector<int> new_vec{7,8,9};
vec.insert(vec.end(), new_vec.begin(), new_vec.end());
```
上述代码首先创建了一个包含两个vector的vector`vec`,然后创建一个新的vector`new_vec`,最后将`new_vec`追加到`vec`的末尾,实现了向`std::vector`中追加`std::vector`的操作。
2.使用`resize()`函数追加`std::vector`
```c++
std::vector<std::vector<int>> vec{{1,2,3},{4,5,6}};
std::vector<int> new_vec{7,8,9};
vec.resize(vec.size()+1, new_vec);
```
上述代码首先创建了一个包含两个vector的vector`vec`,然后创建一个新的vector`new_vec`,最后将`new_vec`追加到`vec`的末尾,实现了向`std::vector`中追加`std::vector`的操作。