Форум программистов, компьютерный форум CyberForum.ru

Инициализация вектора - C++

Восстановить пароль Регистрация
 
GetHelp
-8 / 60 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
06.08.2014, 23:56     Инициализация вектора #1
у меня в классе есть vector из string (константный, просто строки нужны как образец для других функций), в конструкторе соответственно надо это дело как то проинициализировать... вообще можно наверное и просто массив строк сделать, только мне кажется это еще геморнее...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6424 / 3798 / 879
Регистрация: 30.01.2014
Сообщений: 6,591
07.08.2014, 00:00     Инициализация вектора #2
Цитата Сообщение от GetHelp Посмотреть сообщение
вообще можно наверное и просто массив строк сделать, только мне кажется это еще геморнее...
Это лучше, т.к. не жрет впустую память из кучи, да и вообще не тратится время на выделение памяти.
Если есть С++11, то все просто (с вектором аналогично можно поступить):
C++
1
2
3
4
5
6
7
8
9
class C
{
public:
    C() : buf{"test1", "test2"}
    {}
 
private:
    const char * buf[2];
};
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
07.08.2014, 03:45     Инициализация вектора #3
GetHelp, или так, чтоб меньше писанины (да и constexrp можно опустить)
C++
1
2
3
4
5
6
class C
{
public:
    C() = default;
    static constexpr const char * buf[2] {"test1", "test2"};
};
Странно, gcc выдает предупреждение, если убрать const, оставив constexpr.
constexpr же включает в себя const... (не совсем так для C++14, но сейчас не об этом)
gray_fox
07.08.2014, 03:50     Инициализация вектора
  #4

Не по теме:

Цитата Сообщение от gromo Посмотреть сообщение
constexpr же включает в себя const...
включает "внешний" const, т.е constexpr char * подразумевает char * const, а не char const* const...
Тем более тут массив const char*, который и так const, my bad...

Yandex
Объявления
07.08.2014, 03:50     Инициализация вектора
Ответ Создать тему
Опции темы

Текущее время: 00:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru