gpt4 book ai didi

c++ - vector 问题,如何删除 vector 中的数组?

转载 作者:搜寻专家 更新时间:2023-10-31 00:08:39 25 4
gpt4 key购买 nike

我已经创建了一个函数,可以为我正在创建的游戏创建所有可能的解决方案......也许你们中的一些人知道牛牛游戏。

首先,我创建了一个函数,用于创建最多四个整数的组合,并且该组合中不能有任何重复数字...例如...“1234”是一个解决方案,但不是“1223”,因为“2”在数字中重复。从'0123'到'9999'之间总共有5040个没有重号的号码。

这是我的功能:

std::vector <std::array<unsigned, 4>> HittaAllaLosningar(){
std::vector <std::array<unsigned, 4>> Losningar;
for (unsigned i = 0; i < 10; i++) {
for (unsigned j = 0; j < 10; j++) {
for (unsigned k = 0; k < 10; k++) {
for (unsigned l = 0; l < 10; l++) {
if (i != j && i != k && i != l && j != k && j != l && k != l) {
Losningar.push_back({i,j,k,l});
}
}
}
}
}
return Losningar;
}

现在假设我有数字“1234”,这不是我要寻找的解决方案,我想从数组中删除解决方案“1234”,因为这不是解决方案...我该怎么做去做?找了好几个小时都没找到。我已经尝试过 vector.erase 但我收到关于 unsigned 和其他东西的错误......还值得一提的是字符串中的猜测。

我想做的是,从我的程序中获取一个字符串,如果它不是一个解决方案,如果它存在于 vector 中,我想将它从 vector 中删除.

这是创建猜测的代码:

std::string Gissning(){
int random = RandomGen();
int a = 0;
int b = 0;
int c = 0;
int d = 0;

for (unsigned i = random-1; i < random; i++) {
for (unsigned j = 0; j < 4; j++) {
if (j == 0) {
a = v[i][j];
}
if (j == 1) {
b = v[i][j];
}
if (j == 2) {
c = v[i][j];
}
if (j == 3) {
d = v[i][j];
}
}
std::cout << std::endl;
AntalTry++;
}
std::ostringstream test;
test << a << b << c << d;
funka = test.str();

return funka;
}

randomgen 函数只是一个函数,所以我可以获得一个随机数,然后进入循环,这样我就可以获取 vector 的元素,然后获得数组的整数。

非常感谢您抽出时间来帮助我,我非常感激!

最佳答案

您需要找到要删除的元素的位置。

std::array<unsigned, 4> needle{1, 2, 3, 4};
auto it = std::find(Losningar.begin(), Losningar.end(), needle);
if (it != Losningar.end()) { Losningar.erase(it); }

如果你想删除所有匹配的值,或者你不喜欢检查 end,你可以使用 std::remove 和两个迭代器重载的删除。这被称为“删除-删除”习语。

std::array<unsigned, 4> needle{1, 2, 3, 4};
Losningar.erase(std::remove(Losningar.begin(), Losningar.end(), needle), Losningar.end());

关于c++ - vector 问题,如何删除 vector 中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47908195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com