C++ 如何在一个数组中找到不同的元素并将它们放入另一个数组中?c++;

C++ 如何在一个数组中找到不同的元素并将它们放入另一个数组中?c++;,c++,arrays,C++,Arrays,我需要在一个数组中找到不同的元素,然后将它们放到另一个数组中。 例如: A[0] = "Group1" A[1] = "Group2" A[2] = "Group1" A[3] = "Group2" A[4] = "Group3" 我需要另一个数组: B[0] = "Group1" B[1] = "Group2" B[2] = "Group3" 组的顺序并不重要。 我将非常感谢任何帮助。谢谢 您的问题域不清楚。我想你可以使用STL。因此,您可能需要以下关联容器类之一: std::set s

我需要在一个数组中找到不同的元素,然后将它们放到另一个数组中。 例如:

A[0] = "Group1"
A[1] = "Group2"
A[2] = "Group1"
A[3] = "Group2"
A[4] = "Group3"
我需要另一个数组:

B[0] = "Group1"
B[1] = "Group2"
B[2] = "Group3"
组的顺序并不重要。
我将非常感谢任何帮助。谢谢

您的问题域不清楚。我想你可以使用STL。因此,您可能需要以下关联容器类之一:

  • std::set
  • std::map
  • std::multiset
  • std::multimap
  • std::无序集
  • std::无序地图

创建一个新数组作为第一个数组的副本,然后排序并使用
std::unique
消除重复:

std::vector<std::string> A {  ... };
std::vector<std::string> B( A );
std::sort( B.begin(), B.end() );
B.erase( std::unique( B.begin(), B.end() ), B.end() );
您可能希望使用
std::unordered_set
作为临时容器,然后将其复制到数组B:

std::vector<std::string> A {  ... };
std::unordered_set<std::string> tmp( A.begin(), A.end() );
std::vector<std::string> B( tmp.begin(), tmp.end() );
std::vector A{…};
无序设置tmp(A.begin(),A.end());
向量B(tmp.begin(),tmp.end());
如果希望对唯一元素进行排序,也可以使用
std::set
,但这种解决方案通常不太有效


很难说更多,因为您提供的信息不够-您使用的数组类型等。

创建一个名为
seen
集合
,并将访问的所有元素添加到
seen
。然后,您可以跳过在构建数组时已经看到的元素
B
。对于小型数组,请使用
排序
+
唯一
。这个问题被大大低估了。我们可以猜测您想将唯一元素从一个数组复制到另一个数组中,但您能说清楚吗?@KarolyHorvath:erase unique可以,但前提是它们是consecutive@Slava:您需要首先对向量进行排序。将该批次添加到集合中绝对是正确的解决方案。@LightnessRacesinOrbit:我喜欢给出提示。是的,我提到过这一点。@KarolyHorvath:建议使用现代容器是必须的,因为你不知道在编译时结果的大小,而且从专业角度讲,不这样做是不负责任的。@LightnessRacesinOrbit:你怎么知道它在编译时不可用?
std::vector<std::string> A {  ... };
std::unordered_set<std::string> tmp( A.begin(), A.end() );
std::vector<std::string> B( tmp.begin(), tmp.end() );