我有一个说字符串的std :: vector
std::vector<std::string> MyVect = {
"CIRCLE","SQUARE","RECTANGLE","TRIANGLE","LINE"
};
我正在生成一个字符串。我的问题是,如果生成的字符串是“ SQUARE”,则代码应从MyVect中选择“ SQUARE”以外的任何元素(例如选择CIRCLE或RECTANGLE或TRIANGLE而不是SQUARE)。
我对cocos2d-x和c ++非常陌生。 请帮忙! 谢谢
答案 0 :(得分:1)
//然后Out向量应该具有除生成的字符串以外的其他元素。
#include <algorithm>
#include <vector>
std::string generated = "SQUARE";
std::vector<std::string> MyVect = {
"CIRCLE","SQUARE","RECTANGLE","TRIANGLE","LINE"
};
std::vector<std::string> OutputVect;
for (auto str : MyVect )
{
if( str != generated)
{
OutputVect.push_back(str);
}
}
答案 1 :(得分:0)
一种解决方案是保留另一个整数类型 choicesUsed 的向量,每次选择一个随机元素时,将向量索引添加到其中。然后,当下次选择随机元素时,请忽略所有选择的索引位于choicesUsed向量内的选择。
答案 2 :(得分:0)
您可以使用<algorithm>
标头提供的功能模板,如下所示:
#include <algorithm>
#include <cassert>
std::string generated = "...";
const auto firstNonEqual = std::find_if(MyVec.cbegin(), MyVec.cend(),
[&generated](const auto& element){ return element != generated; });
assert(firstNonEqual != MyVec.cend());
std::cout << "selected: " << *firstNonEqual << "\n";