Какая в C++ альтернатива питоновскому enumerate?

Какая в C++ есть альтернатива питоновскому enumerate, чтобы было что-то вроде этого:

# Для каждого элемента в массиве создаём массив с его индексами: unique = [a, b, c] array = [a,b,b,a,a,c,a,c,b,a,c,a] indexes =[] for j in unique:     indexes.append([i+1 for i, e in enumerate(array) if e == j])  #indexes[0] = [1,4,5,7,10,12] для a #indexes[1] = [2,3,9] для b #indexes[2] = [6,8,11] для c 

Как можно реализовать точно такой же код для вектора чисел (vector) в C++?