use*_*378 4 c++ lambda vector c++11
假设我有一节课:
class Cell {
int ID;
int valueX;
int valueY;
};
Run Code Online (Sandbox Code Playgroud)
在main()中我声明了Cells的向量:
vector<Cell> myCells;
Run Code Online (Sandbox Code Playgroud)
我的问题是编写一个函数,它获取单元格的向量,运算符(gt - 大于,等于或等于等等),变量名称和整数,并返回满足要求的单元格向量?例如:
vector<Cells> resultCells = filter(myCells, gt, valueX, 5)
Run Code Online (Sandbox Code Playgroud)
是Cell的向量,其中每个单元格的valueX大于5.
我的第一次尝试需要大量的ifs和开关,我确信这不是正确的解决方案.然后我问朋友一个提示,他告诉我有关像functor,lambdas,std :: function,std :: map,std :: bind之类的东西,这可以帮助我做到这一点,我已经读过它,但我我无法在实践中使用.
我在互联网上看到的一个例子是这个,但它不那么复杂,难以重用(对我来说).
San*_*ker 10
尝试使用以下内容std::copy_if:
std::vector<Cell> resultCells;
std::copy_if(myCells.begin(), myCells.end(), std::back_inserter(resultCells), [](const Cell& c) { return c.valueX > 5; });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9013 次 |
| 最近记录: |