C++ 仅对数字使用一次函数

C++ 仅对数字使用一次函数,c++,c++98,C++,C++98,我有一个问题-是否有可能使函数在一个数字上只工作一次,以避免重复? 如果数组具有{1,2,2} 我希望void(n)只使用2次 是否需要使用某些函数从数组中删除重复项,或者是否有其他方法?将数组转换为集合。这将避免重复 arr= [1,2,2] std::unordered_set<int> s; for (int i: arr) { s.insert(i); } arr=[1,2,2] std::无序的_集; 用于(int i:arr){ s、 插

我有一个问题-是否有可能使函数在一个数字上只工作一次,以避免重复? 如果数组具有
{1,2,2}

我希望
void(n)
只使用2次


是否需要使用某些函数从数组中删除重复项,或者是否有其他方法?

将数组转换为集合。这将避免重复

arr= [1,2,2]
std::unordered_set<int> s;
    for (int i: arr) {
        s.insert(i);
    }
arr=[1,2,2]
std::无序的_集;
用于(int i:arr){
s、 插入(i);
}

这样做的操作方式将与需要它的代码的特定性质直接相关。数字是如何存储的,数字是如何迭代的,函子、静态或其他可能的实现是否合适。答案是肯定的,你能做到。如何烹饪完全取决于你用什么原料烹饪,以及厨房的布局。当然,构建一个不重复的副本和迭代将起作用。如果它适合你的场景,那么就去做。听起来像是一个。您真正想要实现的是什么?是的,您需要一些重复的删除步骤。如果顺序不重要,最好使用
unordered\u set
。假设
arr
是一个
int
数组,包含
n\u arr
元素,所有重复值都是连续的(例如
{1,2,2}
{2,2,1}
可以,但
{2,1}
不可以)然后
std::for_each(arr,std::unique(arr,arr+n_-arr),您的函数将执行此操作。如果重复值不是连续的,首先排序<代码> ARR < /C>。我需要使用C++ 98版本,集是C++的。11@debooger3在问题中,你必须提到这样一个艰难而不寻常的约束。否则你就浪费了写信和回答的人的时间。