[英]Convert vector of arrays into vector of vectors c++
我需要一种将std::vector<std::array<int, 2> >
形式的数据快速转换为std::vector<std::vector<int> >
的方法。 我有以下解决方案,但是在大型向量上这对我来说很慢。
std::vector<std::array<int, 2> > data; // filled with data
std::vector<std::vector<int> > mod;
for (int i = 0; i < data.size(); i++) {
mod.push_back(vector<int>(data[i].begin(), data[i].end()));
}
有没有更有效的方法来做到这一点?
以下应该更有效
std::vector<std::array<int, 2> > data; // filled with data
std::vector<std::vector<int> > mod;
mod.reserve(data.size());
for (int i = 0; i < data.size(); i++) {
mod.emplace_back(data[i].begin(), data[i].end());
}
reserve
可防止mod
向量在增长时重新分配,并且emplace_back
会在适当位置构造较小的向量,从而可能避免一些数据复制。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.