class enemy{
....
}
std::vector<std::unique_ptr<enemy> > enemies1;
for (unsigned i = 0; i < 3; i)
enemies1.emplace_back(...);
for (int i = 0; i < enemies1.size(); i ) {
std::cout << i <<"x: " << enemies1[i]->rect.getPosition().x << std::endl;
}
輸出:
100
200
400
如何從向量中的多個敵人獲得最小坐標值?我想檢測離玩家最近的敵人,例如玩家的坐標是 50,敵人在 100、200、400,如你在上面的例子中看到的。我想檢測向量中最近的敵人。
uj5u.com熱心網友回復:
您可以使用 min_element 從
#include <algorithm>
#include <iostream>
#include <vector>
struct enemy_t
{
explicit enemy_t(const double d) :
distance{ d }
{
}
double distance;
};
int main()
{
// create a vector of enemies using the constructor with one double
std::vector<enemy_t> enemies{ 100.0,400.0,200.0,10.0 };
// the last argument to min_element is a lambda function
// it helps you define by what condition you want to find your element.
auto enemy = std::min_element(enemies.begin(), enemies.end(), [](const enemy_t& lhs, const enemy_t& rhs)
{
return lhs.distance < rhs.distance;
});
std::cout << "The minimum distance found = " << enemy->distance << "\n";
return 0;
}
uj5u.com熱心網友回復:
要找出您可以使用的最小值:
auto result = std::min_element(enemies.begin(), enemies.end(), [](auto a, auto b){return a->rect.getPosition()< b->rect.getPosition();});
std::cout<<"minimum is: "<<(**result).rect.getPosition()<<std::endl;
上面的示例將根據需要列印出最近(最小值)的位置enemy。您只需要將上述兩條陳述句添加到您的程式中即可。
為了確認這有效(編譯并給出預期結果),下面我給出了一個示例,其輸出可以在這里看到。
#include <vector>
#include <iostream>
#include <algorithm>
struct Rectangle
{
int getPosition() const
{
return position;
}
Rectangle(int p):position(p)
{
}
int position = 0;
};
struct enemy
{
Rectangle rect;
enemy(int p): rect{p}
{
}
};
int main()
{
std::vector<enemy*> enemies;
enemy e1(600),e2(200),e3(400),e4(300), e5(100);
enemies.push_back(&e1);
enemies.push_back(&e2);
enemies.push_back(&e3);
enemies.push_back(&e4);
enemies.push_back(&e5);
auto result = std::min_element(enemies.begin(), enemies.end(), [](auto a, auto b){return a->rect.getPosition()< b->rect.getPosition();});
std::cout<<"minimum is: "<<(**result).rect.getPosition()<<std::endl;
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/371210.html
上一篇:未找到Weka過濾器類
