crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

История благодарностей участнику Влад ::: Спасибо сказали: 46 раз(а)
Дата поста: В теме: За сообщение: Спасибо сказали:
29.7.2009, 10:25 C++: как выбрать тип переменной во время выполнения?
Ну, а что здесь непонятного? Вот тебе пример, в остальном разберешься сам:
// GCC 4.4.0 - MinGW, Win XP SP3
// boost::any example

#include "boost/any.hpp"
#include <vector>
#include <iostream>

struct Marine
{
    size_t data_size;
    // any oter data....
    Marine(): data_size(36) {};
};

struct Topo
{
    size_t header_size;
    // any oter data....
    Topo(): header_size(12) {};
};

bool is_topo(const boost::any& _elem)
{
    return _elem.type() == typeid(Topo);
}

bool is_marine(const boost::any& _elem)
{
    return _elem.type() == typeid(Marine);
}

typedef std::vector<boost::any> vec;

void process_all(const vec& _v)
{
    for(vec::const_iterator it = _v.begin(); it != _v.end(); ++it)
    {
        if (is_topo(*it))
        {
            std::cout << "Topo, header_size: " << boost::any_cast<Topo>(*it).header_size << std::endl;
            // any other processing....
        }
        else if (is_marine(*it))
        {
            std::cout << "Marine, data_size: " << boost::any_cast<Marine>(*it).data_size << std::endl;
            // any other processing....
        }
    }
}

int main()
{
    vec v;
    Marine m;
    Topo t;

    v.push_back(m);
    v.push_back(t);
    process_all(v);

    return 0;
}


С boost::variant все то же самое.......
AD,
8.7.2009, 9:42 QVector<T>, если T не имеет конструктора по-умолчанию
Дык, эта.... 'LOGRECORD' : no appropriate default constructor available
Я не копался в потрохах QVector, но, если QVector аналогичен std::vector, то элементы вектора должны быть default constructible (это требование необязательное, но, судя по диагностике - для QVector обязательное), copy constructible и assignable (). Ты нарушаешь эти правила, - стало быть, ты ССЗБ.....
"Правильно создать вектор структур, у которых нет конструктора по умолчанию" тебе в данном случае не удастся - взгляни на реализацию соответствующих функций в qvector.h, внутренняя реализация этого вектора требует их наличия.
AD,
2.7.2009, 13:38 Создание быстродействующего распределителя памяти AD,
21.5.2009, 14:07 Задачка - делим торт, поровну
Можно, можно. Зря сомневаешься. Доказывать с помощью теорем из школьного курса геометрии - мне лично влом.
Хорошо, вот вариант с одним косым разрезом (рисовал опять таки на глазок):

[attachment=623:Торт_деление.png]
AD,
20.5.2009, 12:54 Задачка - делим торт, поровну
Способ 1:
- Скатываем (сминаем, как снежок) оставшуюся часть торта в шарик. Одной операцией делим получившийся шарик пополам (считаем, что это можно сделать точно).

Disclaimer: Вкусовые качества торта от этого не пострадают. О сохранении прямоугольной формы кусков - в исходном ТЗ требование не предъявляется :)
AD,
7.5.2009, 11:56 какой сегодня день
Не-а :) В этот день он продемонстрировал на заседании Русского Физико-Химического Общества свой прибор - "грозоотметчик" (Напомню, что А.С.Попов был преподавателем Минных офицерских классов в Кронштадте, и, естественно, проводил свои исследования прежде всего в интересах моряков. Разумеется, предсказание погоды для моряков - крайне важная штука.) - являвшийся всего лишь радиоприемником; а передатчика в то время у него не было. Опыты же по действительно радиосвязи А.С.Попов начал проводить только в 1897 году - на два года позже. Что, впрочем, не умаляет его научных заслуг.
AD,
28.4.2009, 12:12 Литература по паттернам проектирования
Кстати, вот сейчас читаю вторую книгу из этой же серии: Влиссидес Джон, Применение шаблонов проектирования. Дополнительные штрихи.
В электронном виде лежит тут: http://proklondike.com/index.php?mainpart=4&page=4
AD, trdm,
15.4.2009, 10:48 *.cxx/*.hxx - что за расширения?
Самые что ни на есть обычные исходники и заголовки на C++. По-видимому (это мое предположение), во времена оные, теперь почти былинные, эти расширения были выбраны из-за сходства начертания xx и ++. Многие компиляторы отлично эти расширения знают.
AD, Litkevich Yuriy,
23.3.2009, 22:27 Boost thread - ограниченное количество потоков?
Iron Bug, вот я прочел и так и не понял: зачем все-таки плодить такое колоссальное количество потоков? Тем более, что 99.9% постоянно будут в состоянии ожидания, а когда же им дадут чуток поработать....
Мне кажется, здесь что-то не так в архитектуре приложения. Не лучше ли было бы использовать такие концепции, как "пул потоков" и "задание"? То есть, создается относительно небольшой пул рабочих потоков (размером, например, 2 * количество процессоров), и - баааальшая такая очередь заданий, которую они будут трудолюбиво разгребать. Как-то так.......
А при 2000 потоков они в основном будут бесполезно кушать ресурсы процесса, не успевая сделать ничего полезного.
Нет?
AD,

2 страниц V  < 1 2
RSS Текстовая версия Сейчас: 25.4.2024, 1:54