也许是一个愚蠢/幼稚的问题,但如果我有一个这样的向量向量:
std::vector<std::vector<Element> vec
从这个包含前一个向量中所有元素大小的向量创建另一个向量的最有效方法是什么:
std::vector<std::size_t> newVector = {vec[0].size(), ..., vec[vec.size()-1].size()}
有这样的功能吗?
提前致谢。
可能有一种 1-liner 方法使用来自<algorithm>
或花哨的累加器/转换例程的东西。但是很难超越它的可读性:
std::vector<std::size_t> newVector;
for (const auto& item : vec) {
newVector.push_back(item.size());
}
如果你更喜欢时髦的方式,有些人喜欢这种方式,但在我看来,这会导致代码相当不可读。
vector<int> newVec(vec.size());
std::transform(vec.begin(), vec.end(), newVec.begin(), [](vector<int>& v) {return v.size(); });
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句