我想将 map 转换为 vector 。
int main()
{
map <int,int> m;
m[0]=99;
m[1]=5;
vector<int> v;
transform( m.begin(), m.end(), back_inserter( v ), ??? );
}
我可以使用 STL 中的哪个函数代替 ???。我做了很多谷歌搜索,但没有找到任何东西。
任何讨论都会有所帮助。
最佳答案
或者使用 lambda:
transform(m.begin(), m.end(), back_inserter(v),
[](pair<const int, bool> const & p) { return p.second; });
或者用一个简单的循环:
for (const auto & p : m) { v.push_back(p.second); }
或者使用旧式循环:
for (map<int, bool>::const_iterator it = m.begin(); it != m.end(); ++it)
{ v.push_back(it->second); }
在任何情况下,请事先调用 v.reserve(m.size())
以避免重新分配。
关于c++ - 如何使用转换函数模板将 map 转换为 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19588420/