std::vector v = {1,2,3,4}想要把它变成 std::vector c = {{1,2},{3,4}},实现两两匹配
时间: 2023-08-19 12:26:14 浏览: 52
可以使用以下代码将一个一维的 vector 转换成一个二维的 vector:
```c++
std::vector<int> v = {1, 2, 3, 4};
std::vector<std::vector<int>> c;
for (int i = 0; i < v.size(); i += 2) {
c.push_back({v[i], v[i + 1]});
}
```
这个代码通过遍历一维 vector,每次将两个元素放到一个小 vector 中,然后将这个小 vector 放到二维 vector 中。需要注意的是,如果原 vector 的大小是奇数,那么最后一个元素会被忽略。
相关问题
std::vector可以直接=赋值吗
是的,std::vector可以直接使用=赋值操作符,例如:
```c++
std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2;
vec2 = vec1; // 使用=赋值操作符将vec1赋值给vec2
```
这将使vec2成为与vec1相同的向量,包括其元素和大小。需要注意的是,这是浅拷贝,即会共享底层的数据存储区域,因此对vec1或vec2的更改都会影响另一个向量。如果需要深度拷贝,可以使用vector的拷贝构造函数或assign函数。
遍历std::vector<std::vector<std::string>> indexArr
遍历一个 `std::vector<std::vector<std::string>>` 结构,即二维字符串向量,通常涉及到两层循环,因为你需要遍历每个子向量中的字符串。这里是一个简单的示例,说明如何遍历:
```cpp
std::vector<std::vector<std::string>> indexArr; // 假设这是你要遍历的二维向量
// 遍历二维向量
for (size_t i = 0; i < indexArr.size(); ++i) { // 外层循环,遍历行
std::vector<std::string> row = indexArr[i]; // 获取当前行
for (size_t j = 0; j < row.size(); ++j) { // 内层循环,遍历列
std::string str = row[j]; // 获取当前元素
// 这里你可以对str执行任何操作,例如打印、处理或存储
std::cout << "Element at (" << i << ", " << j << "): " << str << std::endl;
}
}
```