我需要在数组中找到不同的元素并将它们放入另一个数组中。 例如:
A[0] = "Group1"
A[1] = "Group2"
A[2] = "Group1"
A[3] = "Group2"
A[4] = "Group3"
我需要另一个数组:
B[0] = "Group1"
B[1] = "Group2"
B[2] = "Group3"
群组的顺序并不重要。 我会非常感谢任何帮助。谢谢!
答案 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