@futuarmo
погромист

Как хранить записи со стены ВК?

Добрый день! Делаю мобильное приложение небольшое и возникла необходимость получить список записей со всеми вложениями со стены ВК.
В голову приходит QList <QList <QMap <QString, QString> > >.
То есть:
Текст, объекты (музыка, рисунки, видео) хранятся каждый в отдельном QMap <QString, QString>, из этого выходит, что каждая запись со стены - это QList <QMap <QString, QString> >, а соответственно список записей - QList <QList <QMap <QString, QString> > >.
Не сильно ли это громоздко и ресурсоемко в плане производительности?
  • Вопрос задан
  • 291 просмотр
Пригласить эксперта
Ответы на вопрос 3
@Mercury13
Программист на «си с крестами» и не только
Не громоздко и не ресурсоёмко (особенно в C++11 — кстати, скоро Qt вообще откажется от 03).
Однако я бы в таких нагромождениях делал struct’ы из одного элемента. Что-то типа
struct Comment {
  QMap<QString, QString> objects;
};

struct Post {
   QList<Comment> comments;
};

Так код проще будет разобрать.

Только одно непонятно. Что собой представляют эти objects и на что тебе эта «строкотипизированность»?
Ответ написан
Комментировать
@balamyt92
; select * from users; --
Если хранить, то лучше в БД.
Ответ написан
Комментировать
AtomKrieg
@AtomKrieg
Давай я поищу в Google за тебя
Производительность контейнеров зависит от операций, которые с ними осуществляются.
В List быстро вставляется и быстро обходится по порядку, но если вам нужен доступ элементу в середине контейнера, то будет долго. В обычном Map сложность доступа растет логарифмически от размера - от этого недостатка избавлен HashMap. Mercury13 вам правильно подсказывает, что структуры данных надо убрать за абстракцию класса:
class VKWall {
public: 
  Add(VKWallPost&& wp);
private:
   QList<VKWallPost> m_posts;
};

Если столкнетесь с проблемами производительности (только если столкнетесь) и смена контейнеров в классах-обертках не поможет, то рассмотрите табличный вариант хранения:
stuct vkobj {unsigned wallpost_id, char[255] key, char[255] value};
QVector<vkobj> m_posts;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы