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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
art1535
7 / 7 / 0
Регистрация: 19.02.2013
Сообщений: 76
#1

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

02.08.2013, 17:30. Просмотров 2110. Ответов 21
Метки нет (Все метки)

Добрый день. Подскажи те, как инициализировать vector<char> символами - буквами алфавита.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Valentina
68 / 68 / 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
7 / 7 / 0
Регистрация: 19.02.2013
Сообщений: 76
02.08.2013, 17:56  [ТС]     Инициализация vector<char> #3
Это ясно. А более явным образом?

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

C++
1
// vector<char>ivec = { ... };
0x10
2456 / 1628 / 238
Регистрация: 24.11.2012
Сообщений: 4,003
02.08.2013, 17:58     Инициализация vector<char> #4
art1535, в С++11 можно и так.
Somebody
2780 / 1594 / 143
Регистрация: 03.12.2007
Сообщений: 4,178
Завершенные тесты: 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
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
2780 / 1594 / 143
Регистрация: 03.12.2007
Сообщений: 4,178
Завершенные тесты: 1
02.08.2013, 18:04     Инициализация vector<char> #7
Цитата Сообщение от art1535 Посмотреть сообщение
зачем тогда вообще нужен вектор? Можно ведь и пользоваться только этим массивом
Пользуйся массивом, кто же мешает. Ты сам хотел vector.

Добавлено через 37 секунд
Ещё string есть...
art1535
7 / 7 / 0
Регистрация: 19.02.2013
Сообщений: 76
02.08.2013, 18:04  [ТС]     Инициализация vector<char> #8
Со string все понятно хочется более по-человечески
0x10
2456 / 1628 / 238
Регистрация: 24.11.2012
Сообщений: 4,003
02.08.2013, 18:06     Инициализация vector<char> #9
art1535, а почему вектор "по-человечески", а string - нет? О_о
art1535
7 / 7 / 0
Регистрация: 19.02.2013
Сообщений: 76
02.08.2013, 18:07  [ТС]     Инициализация vector<char> #10
Вектор по-человечески
0x10
2456 / 1628 / 238
Регистрация: 24.11.2012
Сообщений: 4,003
02.08.2013, 18:16     Инициализация vector<char> #11
art1535, сорри, я там сразу фигню написал, исправил.
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.08.2013, 18:16     Инициализация vector<char> #12
Цитата Сообщение от art1535 Посмотреть сообщение
зачем тогда вообще нужен вектор?
Вектор - класс с автоматческим управлением памятью, в отличие от обычного массива. Плюс готовые методы для использования.
art1535
7 / 7 / 0
Регистрация: 19.02.2013
Сообщений: 76
02.08.2013, 18:18  [ТС]     Инициализация vector<char> #13
alsav22, после чистого С, к некоторым особенностям в С++ до сих не привыкну
Tulosba
:)
Эксперт С++
4391 / 3234 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.08.2013, 18:22     Инициализация vector<char> #14
Цитата Сообщение от 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
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 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
:)
Эксперт С++
4391 / 3234 / 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
2456 / 1628 / 238
Регистрация: 24.11.2012
Сообщений: 4,003
02.08.2013, 18:45     Инициализация vector<char> #18
Говорили уже, но, блин.
C++
1
std::string s = "abc";
Я не понимаю чем не устраивает этот вариант.
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>>
C++ Unsigned char to vector
Инициализация char в конструкторе C++
C++ Инициализация *char в конструкторе
Инициализация char в классе C++

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

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

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