【发布时间】:2015-11-22 12:24:48
【问题描述】:
我在 C++ 中有两个长度相同的数组。我想从中取出两个新数组:第一个新数组将具有第一个原始数组的唯一元素,而第二个新数组将具有来自第二个原始数组的相应值。例如:
原文:
第一个:1 7 2 3 5 4 4 8 9 9 4 6 7
第二个:1 1 1 2 2 2 3 3 3 4 4 5 5
我想得到:
第一个:1 7 2 3 5 4 8 9 6
第二个:1 1 1 1 2 2 3 3 5
也许我可以使用哈希表,但不太确定该怎么做。任何一种解决方案都可以。提前感谢您的帮助。
【问题讨论】:
-
你想像原始数组一样保持元素的顺序吗?
-
您的阵列有多大,常见情况?如果它像几十个元素,你可能会更好地使用一个连续的表示(
std::vector或理想的优化以避免在如此小的情况下免费存储)。如果它更大,std::set。哦,安东说了什么——你想保留插入顺序吗? -
关于反对票和接近票,这个问题可能很有趣(除非它只是精确地要求
std::set,例如),但您必须更明确地说明您的要求。不要气馁——尝试编辑问题以使其更明确。另一个是数据约束——它们总是整数吗?如果是这样,在一个狭窄的范围内? -
感谢回复,输出中的顺序并不重要,结果可能按第一个数组/向量排序,但对应关系必须保持:1st:1 2 3 4 5 6 7 8 9 // 2nd: 1 1 1 2 2 5 1 3 3 也可以。大小可以达到 10000 个元素。是的,两个数组中只有整数,范围在 0 到 9999 之间。你也可以使用向量,我只是选择了数组。