从给定元素以外的std :: vector中选择一个元素

问题描述 投票:0回答:3

我有一个字符串的std :: vector说

    std::vector<std::string> MyVect = {
     "CIRCLE","SQUARE","RECTANGLE","TRIANGLE","LINE"
    };

我正在生成一个字符串。我的问题是如果生成的字符串是“SQUARE”,代码应该从MyVect中选择除“SQUARE”之外的任何元素(比如选择CIRCLE或RECTANGLE或TRIANGLE但不选择SQUARE)。

我是cocos2d-x和c ++的新手。请帮忙!谢谢

c++ cocos2d-x
3个回答
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);
   }
}

0
投票

一种解决方案是保留另一个整数选择向量,每次选择一个随机元素时,向其添加向量索引。然后,当下一次选择随机元素时,忽略您选择的索引位于您选择的向量中的任何选项。


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";
© www.soinside.com 2019 - 2024. All rights reserved.