find_if関数とマップコンテナの動作を理解しようとしています。私はMap.cppの関数を持っています - タイル& Map :: getTile(const Point & point)マップコンテナからTileを返します。私はコンテナを通過し、現在のマップタイルのポイント位置==関数の引数かどうかを確認する必要があります。C++ mapのfind_if要素
find_ifの3番目のパラメータについてわかりません - 実際のポイントのパラメータをマップから演算子==()に渡して、見つかったTileを返すにはどうすればよいですか? 完全な.cppファイルを提供する必要があるかどうか教えてください。御時間ありがとうございます!
Map.cpp
#include "map.h"
#include <iostream>
#include <map>
#include <algorithm>
Map::Map(int rows, int columns, int mines) {
this->rows = rows;
this->columns = columns;
this->totalMines = mines;
std::map<Point, Tile> tileContainer = {};
}
Tile& Map::getTile(const Point& point) {
std::map<Point, Tile>::iterator it = std::find_if(tileContainer.begin(), tileContainer.end(), point.operator==(?);
}
Point.h
#include "interfaces.h"
struct Point : public APoint {
private:
int row;
int column;
public:
Point(int row, int column);
~Point();
int getRow() const;
int getColumn() const;
bool isInContact(const Point& point) const;
bool operator==(const Point& point) const;
bool operator!=(const Point& point) const;
};
Tile.h
#include "interfaces.h"
#include "point.h"
struct Tile : public ATile {
private:
Point& position;
int bombsInNeighbourhood;
bool bombTile;
TileState tileState;
public:
Tile(const Point& position);
~Tile();
const Point& getPosition();
void setPosition(const Point& position);
int getBombsInNeighbourhood() const;
void setBombsInNeighbourhood(int bombsInNeighbourhood);
bool isBombTile() const;
void setBombTile(bool bombTile);
TileState getTileState() const;
void setTileState(TileState tileState);
};
Map.h
#include "interfaces.h"
#include "point.h"
#include "tile.h"
struct Map : public AMap {
protected:
int rows;
int columns;
int totalMines;
std::map<Point&, Tile> tileContainer;
public:
Map(int rows, int columns, int mines);
~Map();
Tile& getTile(const Point& point);
Tile& getTile(int row, int column);
const Tile& getTile(const Point& point) const;
const Tile& getTile(int row, int column) const;
Point.cpp Iが使用関数:
bool Point::operator==(const Point& point) const {
if (point.column == this->getColumn() && point.row == this->getRow()) {
return true;
}
else {
return false;
}
}
代わりに 'std :: find'を使ってみてください。 – Tobias