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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
#1

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

06.08.2014, 23:56. Просмотров 644. Ответов 3
Метки нет (Все метки)

у меня в классе есть vector из string (константный, просто строки нужны как образец для других функций), в конструкторе соответственно надо это дело как то проинициализировать... вообще можно наверное и просто массив строк сделать, только мне кажется это еще геморнее...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.08.2014, 23:56     Инициализация вектора
Посмотрите здесь:

Инициализация вектора - C++
Как создать и сразу инициализировать вектор числами 5 3 1 3 5 2 5?

Инициализация вектора - C++
Как правильно инициализировать двумерный символьный вектор? Пробовал вот так, не получилось vector< vector<char> > map(2,...

Инициализация вектора - C++
Почему вектор не хочет инициализироваться при обьявлении? vector<int> vec = {1,2,3}; Имеем Error (active) E0289 no instance...

Инициализация вектора структур - C++
Не могу инициализировать вектор. struct cmd{ QString name; qint16 code; }; QVector <cmd> commands={ ...

Инициализация вектора класса - C++
Здравствуйте. Следующий код не работает: struct stRefName { AnsiString BranchName; AnsiString TableName; }; typedef...

Инициализация вектора в стиле С++0х - C++
У меня связка последний Code::Blocks+ последний minigw, но в коде вот такая инициализация вектора: vector<int> ar={1,2,3,4,5,6}; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
7060 / 4201 / 949
Регистрация: 30.01.2014
Сообщений: 6,968
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
370 / 269 / 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     Инициализация вектора
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru