对于hw赋值,我们要编写一个看起来像这样的reduce例程:
int reduce(long array[], int size)
//Where array is the array to reduce, and size is the size of the array.
使用STL。我最初的想法是创建一个集合,将所有项目放在集合中进行比较,但后来我意识到我创建的集合将永远不可用,因为函数返回新集合的大小,但不是集合本身使用。所以我不确定如何使用STL来减少阵列。有什么想法吗?感谢。
编辑: 抱歉,reduce只是将数组减少为一个没有重复的排序数组。
E.g. {4, 4, 2, 1} -> {1, 2, 4}
答案 0 :(得分:8)
使用std :: sort对数组进行排序,然后在其上应用std :: unique以删除重复项。 std :: unique仅适用于已排序的数组。这里只是简化问题的方法是如何获得原生数组的begin
和end
:
long* begin = array;
long* end = array + size;
一旦掌握了这两项内容,就可以轻松应用标准算法。此外,如果您需要返回新的大小(数组中使用的元素):
long* end_after_unique = unique(...);
return end_after_unique - array;
答案 1 :(得分:0)
std :: map只允许单个条目,并会自动为您排序。您的案例中的“第二”值是无关紧要的。
std::map<INT32,INT32> mymap;
mymap[i] = array[i];//inserts if not already present