首页 > 解决方案 > 在 2D 向量上使用 STL 算法提取第一列

问题描述

我正在尝试学习使用更多的 STL 算法。我无法查看是否有更标准的方式来编写以下代码。

std::vector<std::vector<std::string>> myVec;
std::vector<std::string> myInnerVec;
for(int y=0;y < myVec.size();y++){
    myInnerVec.emplace_back(myVec[y][0]);
}

在这里,我从向量 myVec 中提取第一列并将其放入 myInnerVec。可以使用任何 STL 魔术改进此代码吗?

标签: c++algorithmvectorstltransform

解决方案


当然。std::transform应该做你想做的(未经测试的代码):

transform(myVec.begin(), myVec.end(), 
    back_insert_iterator<vector<string>>(myInnerVec), 
    [](const vector<string> &v) {return v[0];});

推荐阅读