Какой контейнер лучше всего подходит для хранения данных {произвольного задания} на C++?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Какой контейнер лучше всего подходит для хранения данных {произвольного задания} на C++?

Сообщение Anonymous »

Я пишу приложение, которое должно использовать поля jobject несколько раз с большой скоростью. Поскольку извлечение полей из заданий происходит довольно медленно, я хочу сделать это один раз, а затем читать и записывать поля какого-нибудь объекта C++ или элементов многотипного массива (если таковой может быть создан) или чего-то еще, что обеспечивает быстрый доступ к данным ( здесь и далее - целевой контейнер).
Мой код имеет две функции: первая записывает поля задания в целевой контейнер, вторая считывает из него записанные данные .
Целевой контейнер должен иметь возможность хранить переменные разных типов, и его размер не должен определяться во время компиляции (поэтому структура не подходит). Вопрос: какой контейнер лучше всего удовлетворяет этим условиям, если его качество определяется скоростью чтения (+преобразования типов в правильные) из него?
Сейчас я использую вектор, как показано ниже:

Код: Выделить всё

#include 
#include 
JNIEXPORT void JNICALL Java_runTask(JNIEnv*env,jclass,jobject o){
vectord;
readData(d,/*some other arguments*/,o);
do{
//do something useful
}while(predicate);
}

void readData(vector*data/*some other arguments*/,jobject o){
//fill the vector with jobject's fields' values
}

bool predicate(vector*data){
//determine the return value using vector contents
return true;
}
соответствует моим условиям, НО...
  • Я не уверен, что вектор — самый быстрый контейнер для чтения.
  • Код: Выделить всё

    any_cast()
    ПРОВЕРЯЕТ тип перед регистром, а это означает, что его производительность несовершенна.


Подробнее здесь: https://stackoverflow.com/questions/782 ... -data-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»