我有一个字符串的std :: vector说
std::vector<std::string> MyVect = {
"CIRCLE","SQUARE","RECTANGLE","TRIANGLE","LINE"
};
我正在生成一个字符串。我的问题是如果生成的字符串是“SQUARE”,代码应该从MyVect中选择除“SQUARE”之外的任何元素(比如选择CIRCLE或RECTANGLE或TRIANGLE但不选择SQUARE)。
我是cocos2d-x和c ++的新手。请帮忙!谢谢
//然后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);
}
}
一种解决方案是保留另一个整数选择向量,每次选择一个随机元素时,向其添加向量索引。然后,当下一次选择随机元素时,忽略您选择的索引位于您选择的向量中的任何选项。
您可以使用<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";