Как связать с номером другое число без использования массива - PullRequest
1 голос
/ 20 января 2011

Допустим, мы прочитали эти значения:

3
1241
124515
5322353
341
43262267234
1241
1241
3213131

И у меня есть такой массив (с элементами выше):

a[0]=1241
a[1]=124515
a[2]=43262267234
a[3]=3
...

Дело в том, что элементы 'порядок в массиве не является постоянным (я должен изменить его где-нибудь в моей программе).

Как узнать, в какой позиции один элемент появляется в прочитанном документе.

Обратите внимание, чтоЯ не могу сделать:

vector <int> a[1000000000000];
a[number].push_back(all_positions);

Поскольку a будет слишком большим (есть ограничение памяти).(допустим, у меня есть только 3000 элементов, но их значения находятся в диапазоне от 0 до 2 ^ 32)

Итак, в приведенном выше примере я хотел бы знать, что все позиции 1241 появляются без повторения итерации.через все прочитанные элементы.

Другими словами, как я могу связать с числом "1241" позиции "1,6,7", чтобы я мог просто получить к ним доступ в O (1) (где на самом деле 1это число позиций, в которых появляется элемент)

Если нет O (1), я хочу знать, какое из них оптимальное ... Я не знаю, ясно ли я пояснил.Если нет, просто скажите это, и я обновлю свой вопрос:)

Ответы [ 11 ]

0 голосов
/ 20 января 2011

Вместо хранения целочисленного массива вы можете хранить массив структуры, содержащий целочисленное значение и все его позиции в массиве или векторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...