2012-04-29 3 views
1

Я хочу хранить целые числа с длиной более 64 бит. Количество бит на целое число может увеличиваться до миллиона, поскольку каждая запись добавляется в приложение. И тогда для 64 таких целых чисел (равной длины) бит-бит И операция должна выполняться.Как сохранить целое число более 64 бит в C++?

Итак, какова была бы лучшая структура данных C++ для того, чтобы операции были эффективными по времени? Раньше я рассматривал векторы для него, так как это позволяло бы динамически увеличивать длину. Другой вариант - использовать std: bitset.

Но я не уверен, как выполнять бит-мудрый AND с обоими этими подходами, чтобы его было сделано в большинстве случаев.

Благодаря

+2

Есть некоторые хорошие целые библиотеки произвольной точности. – chris

ответ

3

GNU Multiprecision Library является хорошей произвольной точностью целой библиотеки. Скорее всего, он сильно оптимизирован до специфики вашего компилятора/процессора, поэтому я бы пошел с этим в качестве первого запуска, и если он не будет достаточно быстрым, выполните свою собственную конкретную реализацию.

0

Это довольно дорого перераспределить память для вектора при приеме больших объемов данных, поэтому я бы определил

struct int_node{ 
    bitset<256> holder; 
    int_node *next_node; 
} 

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

Смежные вопросы