【发布时间】:2020-08-25 09:04:41
【问题描述】:
如何用 STL 算法替换 for 循环?这里我想将向量vals中vals[i]的值赋给nodeList中的nodeList[i]->val。如果我用vals[i] * 2来代替呢?
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
int main()
{
TreeNode node1(1);
TreeNode node2(2);
TreeNode node3(3);
node1.left = &node2;
node1.right = &node3;
vector<TreeNode*> nodeList = {&node1, &node2, &node3};
vector<int> vals = {1, 3, 2};
for (int i = 0; i < vals.size(); i++) {
nodeList[i]->val = vals[i];
// nodeList[i]->val = vals[i] * 2;
}
}
【问题讨论】:
-
没有适用于所有事物的标准算法。没关系,因为你总是可以自己动手卷。实际上,它非常好,否则只会令人困惑。
-
对不起,我修改了描述。是关于STL算法的,比如
std::find, std::copy, std::transform等等。
标签: c++ for-loop c++11 c++-standard-library