std:;vector
时间: 2023-12-12 18:31:41 浏览: 74
std::vector是C++ STL中的一个容器,它可以存储任意类型的元素,并且可以动态地调整大小。它类似于数组,但是比数组更加灵活和方便。std::vector提供了许多方法来操作它的元素,例如添加、删除、访问等。在引用中,示例展示了如何使用std::vector来操作元素,包括访问第一个和最后一个元素,以及使用指针来修改元素。在引用中,介绍了std::vector的构造函数,包括构造空vector、构造指定大小和值的vector、以及使用迭代器来构造vector等。在引用中,示例展示了如何使用std::vector的赋值运算符和清空函数。
相关问题
std:vector 如何获取元素的index
在 C++ 中,可以使用 std::vector 的迭代器来获取元素的索引,也可以使用下标操作符 [] 来获取。
使用迭代器:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
int index = 0;
for (auto it = vec.begin(); it != vec.end(); ++it) {
if (*it == 3) {
index = std::distance(vec.begin(), it);
break;
}
}
std::cout << "Index of 3 is " << index << std::endl;
```
上述代码中,我们使用迭代器遍历 vector 中的元素,当找到值为 3 的元素时,使用 std::distance 函数计算出该元素在 vector 中的索引。
使用下标操作符 []:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
int index = -1;
for (int i = 0; i < vec.size(); ++i) {
if (vec[i] == 3) {
index = i;
break;
}
}
std::cout << "Index of 3 is " << index << std::endl;
```
上述代码中,我们使用循环遍历 vector 中的元素,当找到值为 3 的元素时,使用循环变量 i 就是该元素在 vector 中的索引。
需要注意的是,上述两种方法都是在 vector 中查找某个元素的索引,如果要查找多个元素的索引,建议使用迭代器来遍历 vector,因为迭代器可以提高遍历效率。
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`的操作。
阅读全文