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

时间:2014-11-06 18:37:32

标签: 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"

群组的顺序并不重要。 我会非常感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:1)

创建一个新数组作为第一个数据的副本,然后排序并使用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作为第二个容器,只需将所有元素复制到那里:

std::vector<std::string> A {  ... };
std::unordered_set<std::string> B( A.begin(), A.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::set,但这通常不太有效。

由于您提供的信息不足 - 您使用的阵列类型等等,很难说更多。

答案 1 :(得分:0)

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

  • std::set
  • std::map
  • std::multiset
  • std::multimap
  • std::unordered_set
  • std::unordered_map