Есть ли какой-нибудь вектор, который может содержать любые POD? что-то вроде:Вектор, который может содержать любые POD
anyvector v;
v.push_back<int>(1);
v.push_back<somestruct>({1, 2, 3});
и доступ к нему с:
int a = v.get<int>(0);
somestruct b = v.get<somestruct>(1);
Я знаю, что должно быть наверху, чтобы сохранить смещения каждого элемента, но оно должно быть меньше накладных расходов, vector<boost::any>
это мой текущее решение.
Операции, в которых я нуждаюсь, - это вставка в конец, удаление из конечного и произвольного доступа.
Я знаю, что это не проблема для его реализации, просто спрашивая, есть ли готовый.
Редактировать: Решение, которое использует указатели для хранения данных (boost::any
, boost::variant
), является большим накладным расходами с использованием линейного хранилища, которое я ищу.
Оставьте ваше внимание на BOOST [Any] (http://www.boost.org/doc/libs/1_49_0/doc/html/any.html) и [Вариант] (http://www.boost.org /doc/libs/1_49_0/doc/html/variant.html) – megabyte1024
@ megabyte1024: как я уже сказал, это мое текущее решение, но каждый из них несет указатель, который является огромным накладным потоком от линейного хранилища. – Dani
Или QVariant, если вы используете Qt. Сначала сконцентрируйтесь на создании переменной Any-Type-Variable (Any, Variant, QVariant), а затем поместив ее в вектор, просто используйте std :: vector для этого типа. – Patrick