I profiled a library I'm writing that uses vector transposes and found that I am spending a good bit of time doing the following transpose. I am using a std::vector
of std::vector<double>
s to represent the column vectors.
What are some ways to optimize this function?
std::vector<double> transpose_vector(const std::vector<std::vector<double>> &column_vec) {
// take a column vector:
// |x1|
// |x2|
// |x3|
// and return a row vector |x1, x2, x3|
std::vector<double> row_vector;
for (auto c : column_vec) {
for (auto r : c) {
row_vector.push_back(r);
}
}
return row_vector;
}