1

I am not understanding the function passing in the accumulate function

int numIdenticalPairs(vector<int>& A) {
        return accumulate(A.begin(), A.end(), 0, [count = unordered_map<int, int> {}] (auto a, auto b) mutable {
            return a + count[b]++;
        });
    }
  • what exactly you have trouble with? Please be specific in what you understand and what not from the code snippet so that we can help you. – bolov Jan 04 '21 at 09:23
  • I am not understanding the how ''mutable" function is pass "[count = unordered_map {}]" this syntaxt – Siddhesh Jungade Jan 04 '21 at 09:50

1 Answers1

0

std::accumulate() function is used to accumulate all the values in the range [first, last] both inclusive to any variable initial_sum.

int myfunction (int x, int y) {
  return x+2*y;
}

int main () {
  int init = 100;
  int numbers[] = {10, 20, 30};
  std::cout << std::accumulate (numbers, numbers+3, init, myfunction);

}

and 4th parameter where you are confused is lambda function of c++ is same as usual function but has no name.

[count = unordered_map<int, int> {}] (auto a, auto b) mutable {
    return a + count[b]++;
};
pradeexsu
  • 1,029
  • 1
  • 10
  • 27