1

我需要用 ∉ 做一个 if 条件(不属于)

条件:

if tj ∉ A(fi) where A(fi) contains some elements

例子:

A(f1)= t1, t2 A(f2)= t1, t3

所以如果 t3 ∉ A(f1) 做某事。

我的问题是我不知道如何在 C++ 中执行 ∉

编辑:

谢谢你的回答。

我还有一个问题,但我不知道这是否真的可能,或者我是否梦想太多。我需要多次运行我的程序,但每次 A(fi) 中的元素都会改变。

我知道可以随机使用 0 和 1。所以我在想,不是 put t1 而是用 0 或 1 替换,但是在我不知道如何编写命令之后。

就像我有 A(f1) ={1, 0,1,0} 和 A(f2)={0,1,1,0} 所以 t1 出现在 A(f1), t2 出现在 A(f2), t3出现在 A(f1) 和 A(f2) 等。

对于 set 函数,它写道:

“集合是按照特定顺序存储独特元素的容器。” 所以有可能给订单起个名字

所以我的问题是你认为这是否可能以及我如何链接 t1、t2、t3 ......?

我发现另一个问题是我可能会创建更多的集合来拥有超过 2 或 A(fi),数量不是提前的。我没有发现如何在不同时间创建不同数量的集合。可能吗?

4

3 回答 3

3

您可以为此使用std::set,这是一个示例:

#include <iostream>
#include <set>
#include <string>

int main ()
{
  std::set<std::string> myset;

  myset.insert( "t1") ;
  myset.insert( "t2") ;

  if( myset.count( "t2") != 0 )
  {
     std::cout << "Set contains t2" << std::endl; 
  }

  if( myset.count( "t3") != 0 )
  {
     std::cout << "Set contains t3" << std::endl; 
  }

  return 0;
}

以及使用std::includes的示例:

#include <iostream>
#include <string>
#include <algorithm>
#include <cctype>
#include <vector>

int main ()
{
  std::vector<std::string> v1 {"t1", "t2", "t3", "t4" };
  std::vector<std::string> v2 {"t2", "t4"};
  std::vector<std::string> v3 {"t3"};  

  std::cout << "v1 contains the follows elments of v2:" << std::endl ;
  for (auto i : v2){
     std::cout << i << ' ';
     std::cout << ": " << std::includes(v1.begin(), v1.end(), v2.begin(), v2.end()) << std::endl ;
  }

  std::cout << "v1 contains the follows elments of v3:" << std::endl ;
  for (auto i : v3){
     std::cout << i << ' ';
     std::cout << ": " << std::includes(v1.begin(), v1.end(), v2.begin(), v2.end()) << std::endl ;
  }

  return 0;
}
于 2013-03-10T03:44:09.250 回答
0

使用Set容器来存储一组元素。然后使用该方法count并检查其返回值是否为零。

于 2013-03-10T03:43:06.347 回答
0

假设这A是一个返回 a std::set(或对 a 的引用std::set)的函数:

auto& s = A(f1);
if(s.find(t3) == s.end())
  std::cout << "Not in set\n";
于 2013-03-10T03:43:23.043 回答