Size: a a a

2020 July 30

VD

Vlad Doc in supapro.cxx
Dimmu Borgir
Типо проект получится не универсальным то есть потом добавит графику не получится
И чем тебе потоки не универсально?)
class IPrinter
{
    public:
    virtual void print(std::ostream& where) = 0;
}

class TwoStrings : public IPrinter
{
      private:
              std::string str1;
              std::string str2;
      public:
      virtual void print(std::ostream& where) override
      {
               where << str1 << std::endl
                     << str2 << std::endl;
      }
}
....

TwoStrings t;

std::fstream fout("file.txt");

t.print(std::cout);
t.print(std::err);
t.print(fout);
источник

S

SorX in supapro.cxx
Здравствуйте. На чем писать графический интерфейс для программы? Кроссплатформенность не нужна(только windows)
источник

VD

Vlad Doc in supapro.cxx
SorX
Здравствуйте. На чем писать графический интерфейс для программы? Кроссплатформенность не нужна(только windows)
Очевидный qt
источник

DB

Dimmu Borgir in supapro.cxx
Vlad Doc
И чем тебе потоки не универсально?)
class IPrinter
{
    public:
    virtual void print(std::ostream& where) = 0;
}

class TwoStrings : public IPrinter
{
      private:
              std::string str1;
              std::string str2;
      public:
      virtual void print(std::ostream& where) override
      {
               where << str1 << std::endl
                     << str2 << std::endl;
      }
}
....

TwoStrings t;

std::fstream fout("file.txt");

t.print(std::cout);
t.print(std::err);
t.print(fout);
спасибо)
источник

VD

Vlad Doc in supapro.cxx
Потому что C++/CLI глина
источник

AS

Anatoly Shirokov in supapro.cxx
тогда уж и шарп тогда, зачем C++
источник

тК

тот самый Костян... in supapro.cxx
использует кто тревис для сборки проектов? можно ли как-то в нем делать несколько deploy? а то я если несколько указываю - выполняется только последний - то есть перекрываются. Или может синтаксис какой необычный?
источник

TS

Till Schneider in supapro.cxx
тот самый Костян
использует кто тревис для сборки проектов? можно ли как-то в нем делать несколько deploy? а то я если несколько указываю - выполняется только последний - то есть перекрываются. Или может синтаксис какой необычный?
через matrix делаешь?
источник

VD

Vlad Doc in supapro.cxx
тот самый Костян
использует кто тревис для сборки проектов? можно ли как-то в нем делать несколько deploy? а то я если несколько указываю - выполняется только последний - то есть перекрываются. Или может синтаксис какой необычный?
Вопрос для @probuildsystems же.
источник

UT

Unknown T. in supapro.cxx
Всем привет! Вопрос по аллокаторам. Например, есть код:
allocator<string> al;
string *str = al.allocate(2);
al.construct(str, "very long string...");
al.construct(str + 1, "2");

Когда мы выделили память под две строки, выделилось два блока памяти под два объекта string, которые стоят друг за другом. Вопрос, когда мы непосредственно конструируем объект str[0], ему, очевидно, не хватает выделенного ранее места. Откуда берется память и как это происходит?
источник

AS

Anatoly Shirokov in supapro.cxx
Unknown T.
Всем привет! Вопрос по аллокаторам. Например, есть код:
allocator<string> al;
string *str = al.allocate(2);
al.construct(str, "very long string...");
al.construct(str + 1, "2");

Когда мы выделили память под две строки, выделилось два блока памяти под два объекта string, которые стоят друг за другом. Вопрос, когда мы непосредственно конструируем объект str[0], ему, очевидно, не хватает выделенного ранее места. Откуда берется память и как это происходит?
string сложный объект, он выделяет в хипе себе место под строку (если грубо без оглядки на SSO), а сам хранит указатель, размер и капасити. В случае с короткими строками может применятся SSO (short string optimization) b
источник

AS

Anatoly Shirokov in supapro.cxx
тебя же не удивляет, что sizeof(std::string) == const
источник

DF

Dollar Føølish in supapro.cxx
А есть статья как SSO обходит стрикт альясинг рул?
источник

DF

Dollar Føølish in supapro.cxx
Или для кроме basic_string<char> это не будет работать?
источник

UT

Unknown T. in supapro.cxx
Anatoly Shirokov
string сложный объект, он выделяет в хипе себе место под строку (если грубо без оглядки на SSO), а сам хранит указатель, размер и капасити. В случае с короткими строками может применятся SSO (short string optimization) b
Ну это понятно, а вот в самой куче, как это происходит. Я представляю, что куча состоит из примерно таких блоков сырых данных:
struct Block {
   bool used;
   size_t size;
   char* data;
}

Вот изначально string попал в heap в один из таких блоков, потом ему внутри нужно больше памяти, но этот блок уже заполнен. Что происходит в этом случае?
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Dollar Føølish
А есть статья как SSO обходит стрикт альясинг рул?
Никак
источник

DF

Dollar Føølish in supapro.cxx
Удобно ;)
источник

AS

Anatoly Shirokov in supapro.cxx
Unknown T.
Ну это понятно, а вот в самой куче, как это происходит. Я представляю, что куча состоит из примерно таких блоков сырых данных:
struct Block {
   bool used;
   size_t size;
   char* data;
}

Вот изначально string попал в heap в один из таких блоков, потом ему внутри нужно больше памяти, но этот блок уже заполнен. Что происходит в этом случае?
строка ничего не знает об устройстве хипа, строка аллоцирует новый кусок памяти (new[]), если ей требуется больше, старый отдает (delete[])
источник

D

Danya in supapro.cxx
Unknown T.
Ну это понятно, а вот в самой куче, как это происходит. Я представляю, что куча состоит из примерно таких блоков сырых данных:
struct Block {
   bool used;
   size_t size;
   char* data;
}

Вот изначально string попал в heap в один из таких блоков, потом ему внутри нужно больше памяти, но этот блок уже заполнен. Что происходит в этом случае?
Я не думаю что куча состоит из таких блоков, откуда куча должна знать сколько пользователь заиспользовал памяти из выделенного куска?
источник

UT

Unknown T. in supapro.cxx
Anatoly Shirokov
строка ничего не знает об устройстве хипа, строка аллоцирует новый кусок памяти (new[]), если ей требуется больше, старый отдает (delete[])
То есть вот был у строки указатель на массив символов, если ей нужно больше места, то сначала аллоцируется новый кусок, данные переписываются туда, указатель переставляется на новый кусок, а старый деаллоцируется?
источник