我知道如何从法向量中提取子集,以及如何从另一个向量内的向量中提取子集。我现在的问题是如何提取另一个向量内的所有向量的子集。
例如:我在另一个向量中有三个向量:
std::vector<std::vector<int>> my_vec;
std::vector<int> vec_1{1,2,3,4,5};
std::vector<int> vec_2{11,12,13,14,15};
std::vector<int> vec_3{21,22,23,24,25};
my_vec.push_back(vec_1);
my_vec.push_back(vec_2);
my_vec.push_back(vec_3);
Run Code Online (Sandbox Code Playgroud)
我现在想做的是创建一个新向量,其中包含每个向量的第三个和第四个元素的子集。我试过这个:
#include<vector>
#include <iostream>
int main()
{
std::vector<std::vector<int>> my_vec;
std::vector<int> vec_1{1,2,3,4,5};
std::vector<int> vec_2{11,12,13,14,15};
std::vector<int> vec_3{21,22,23,24,25};
my_vec.push_back(vec_1);
my_vec.push_back(vec_2);
my_vec.push_back(vec_3);
// For a normal vector
std::vector<int> vec_1_subset(vec_1.begin()+2,vec_1.begin()+4);
for (auto& element: vec_1_subset)
{
std::cout<<element<<std::endl;
}
// For extracting from a single vector inside another vector
std::vector<int> my_vec_subset((my_vec[0]).begin()+2,(my_vec[0]).begin()+4);
for (auto& element: my_vec_subset)
{
std::cout<<element<<std::endl;
}
// For several vectors inside a vector ?
std::vector<std::vector<int>> my_vec_test_subset(my_vec.begin()+2,my_vec.begin()+4);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
最后一次尝试创建一条错误消息。
您可能会执行以下操作:
std::vector<std::vector<int>> res;
res.reserve(my_vec.size());
std::transform(my_vec.begin(), my_vec.end(),
std::back_inserter(res),
[](const std::vector<int>& v){ return std::vector<int>{v.begin() + 2,
v.begin() + 4}; });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
291 次 |
| 最近记录: |