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

Инициализация vector<char> - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
art1535
 Аватар для art1535
7 / 7 / 0
Регистрация: 19.02.2013
Сообщений: 76
02.08.2013, 17:30     Инициализация vector<char> #1
Добрый день. Подскажи те, как инициализировать vector<char> символами - буквами алфавита.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Valentina
66 / 66 / 3
Регистрация: 13.05.2012
Сообщений: 130
02.08.2013, 17:53     Инициализация vector<char> #2
можно так
C++
1
2
3
char arr[]={'A','B', 'C', 'D', 'F'};
    vector<char>ivec;
    ivec.insert(ivec.end(),arr,arr+5);
art1535
 Аватар для art1535
7 / 7 / 0
Регистрация: 19.02.2013
Сообщений: 76
02.08.2013, 17:56  [ТС]     Инициализация vector<char> #3
Это ясно. А более явным образом?

Что то вроде инициализации обычного массива

C++
1
// vector<char>ivec = { ... };
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
02.08.2013, 17:58     Инициализация vector<char> #4
art1535, в С++11 можно и так.
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
02.08.2013, 18:01     Инициализация vector<char> #5
Цитата Сообщение от Valentina Посмотреть сообщение
C++
1
2
3
char arr[]={'A','B', 'C', 'D', 'F'};
    vector<char>ivec;
    ivec.insert(ivec.end(),arr,arr+5);
Тогда уж сразу можно
C++
1
2
char arr[]={'A','B', 'C', 'D', 'F'};
    vector<char>ivec(arr,arr+5);
art1535
 Аватар для art1535
7 / 7 / 0
Регистрация: 19.02.2013
Сообщений: 76
02.08.2013, 18:01  [ТС]     Инициализация vector<char> #6
Просто мне тогда не понятно одно: если пользоваться способом
C++
1
2
3
    char arr[]={'A','B', 'C', 'D', 'F'};
    vector<char>ivec;
    ivec.insert(ivec.end(),arr,arr+5);
зачем тогда вообще нужен вектор? Можно ведь и пользоваться только этим массивом
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
02.08.2013, 18:04     Инициализация vector<char> #7
Цитата Сообщение от art1535 Посмотреть сообщение
зачем тогда вообще нужен вектор? Можно ведь и пользоваться только этим массивом
Пользуйся массивом, кто же мешает. Ты сам хотел vector.

Добавлено через 37 секунд
Ещё string есть...
art1535
 Аватар для art1535
7 / 7 / 0
Регистрация: 19.02.2013
Сообщений: 76
02.08.2013, 18:04  [ТС]     Инициализация vector<char> #8
Со string все понятно хочется более по-человечески
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
02.08.2013, 18:06     Инициализация vector<char> #9
art1535, а почему вектор "по-человечески", а string - нет? О_о
art1535
 Аватар для art1535
7 / 7 / 0
Регистрация: 19.02.2013
Сообщений: 76
02.08.2013, 18:07  [ТС]     Инициализация vector<char> #10
Вектор по-человечески
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
02.08.2013, 18:16     Инициализация vector<char> #11
art1535, сорри, я там сразу фигню написал, исправил.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.08.2013, 18:16     Инициализация vector<char> #12
Цитата Сообщение от art1535 Посмотреть сообщение
зачем тогда вообще нужен вектор?
Вектор - класс с автоматческим управлением памятью, в отличие от обычного массива. Плюс готовые методы для использования.
art1535
 Аватар для art1535
7 / 7 / 0
Регистрация: 19.02.2013
Сообщений: 76
02.08.2013, 18:18  [ТС]     Инициализация vector<char> #13
alsav22, после чистого С, к некоторым особенностям в С++ до сих не привыкну
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.08.2013, 18:22     Инициализация vector<char> #14
Цитата Сообщение от art1535 Посмотреть сообщение
к некоторым особенностям в С++
Это не особенности. Это ООП.
art1535
 Аватар для art1535
7 / 7 / 0
Регистрация: 19.02.2013
Сообщений: 76
02.08.2013, 18:35  [ТС]     Инициализация vector<char> #15
Остановился все-таки на этом варианте

C++
1
2
3
    char arr[]={'A','B', 'C', 'D', 'F'};
    vector<char> alf;
    alf.insert( alf.begin(), arr, arr + sizeof( arr ) );
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
02.08.2013, 18:38     Инициализация vector<char> #16
art1535, Зачем сначала конструировать пустой вектор, а затем вставлять значения?
C++
1
2
char arr[]={'A','B', 'C', 'D', 'F'};
 vector<char> alf(arr, arr + sizeof(arr) / sizeof(*arr));
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.08.2013, 18:43     Инициализация vector<char> #17
А что если со строкой?
C++
1
2
const char* c = "abcdefg";
std::vector<char> v( c, c+strlen(c) );
или так:
C++
1
2
const char c[] = "abcdefg";
std::vector<char> v( c, c+sizeof(c)/sizeof(*c) );
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
02.08.2013, 18:45     Инициализация vector<char> #18
Говорили уже, но, блин.
C++
1
std::string s = "abc";
Я не понимаю чем не устраивает этот вариант.
art1535
 Аватар для art1535
7 / 7 / 0
Регистрация: 19.02.2013
Сообщений: 76
02.08.2013, 18:45  [ТС]     Инициализация vector<char> #19
ForEveR, ого вот это уже здорово.

Объясните, что происходит во второй строке, а именно для чего нужно это выражение:

C++
1
arr + sizeof(arr) / sizeof(*arr)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2013, 18:49     Инициализация vector<char>
Еще ссылки по теме:

C++ Запись в vector<vector<char>>
Инициализация char в конструкторе C++
C++ Инициализация *char в конструкторе

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
02.08.2013, 18:49     Инициализация vector<char> #20
art1535, Говорим, что нам нужен указатель на arr + (размер массива / размер элемента), в случае с char можно убрать / sizeof(*arr).
Yandex
Объявления
02.08.2013, 18:49     Инициализация vector<char>
Ответ Создать тему
Опции темы

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