我目前正在尝试学习如何有效地使用c ++的STL部分.假设有两个相同类型的相同长度的向量需要通过应用一些运算符转换为另一个相同长度的向量,是否有一种使用STL功能的好方法?
这是我正在尝试做的一些伪代码:
vector<T> a;
vector<T> b;
vector<T> result;
for (int i = 0; i < a.size(); ++i){
result.at(i) = a.at(i) op b.at(i);
}
Run Code Online (Sandbox Code Playgroud)
其中"op"是为类型T定义的某些运算符.
您可能需要检查尺寸,但通常可以使用std::transform
.
例如(for +
- <functional>
包含此和其他二元运算符的函数对象的类模板)
std::transform( a.begin(), a.end(), b.begin(), result.begin(), std::plus<T>() );
Run Code Online (Sandbox Code Playgroud)
你需要确保b.size() >= a.size()
和result.size() >= a.size()
.如果result
开始为空,则可以使用a back_insert_iterator
来填充它,而无需先调整容器大小.
归档时间: |
|
查看次数: |
456 次 |
最近记录: |