Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.82/17: Рейтинг темы: голосов - 17, средняя оценка - 4.82
art1535
7 / 7 / 3
Регистрация: 19.02.2013
Сообщений: 76
1

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

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

Добрый день. Подскажи те, как инициализировать vector<char> символами - буквами алфавита.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2013, 17:30
Ответы с готовыми решениями:

Запись в vector<vector<char>>
Задача такова: Считать с нескольких разных файлов бинарным способом в ...

Инициализация vector
При создание вектора, пытаюсь сразу задать начальные значения:...

Инициализация графа (контейнер vector)
Нашёл как ра то, что мне нужно, алгоритм Форда-Беллмана. С помощью этого...

Инициализация полей класса через vector<>
Здравствуйте, можете подсказать как правильно инициализировать поля класса, вот...

Инициализация статического члена std::vector в шаблонном классе
есть класс myclass , владеющий классом struct template&lt;class T&gt; class...

23
Valentina
69 / 69 / 13
Регистрация: 13.05.2012
Сообщений: 130
02.08.2013, 17:53 2
можно так
C++
1
2
3
char arr[]={'A','B', 'C', 'D', 'F'};
    vector<char>ivec;
    ivec.insert(ivec.end(),arr,arr+5);
1
art1535
7 / 7 / 3
Регистрация: 19.02.2013
Сообщений: 76
02.08.2013, 17:56  [ТС] 3
Это ясно. А более явным образом?

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

C++
1
// vector<char>ivec = { ... };
0
0x10
2571 / 1751 / 288
Регистрация: 24.11.2012
Сообщений: 4,377
02.08.2013, 17:58 4
art1535, в С++11 можно и так.
0
Somebody
2799 / 1610 / 251
Регистрация: 03.12.2007
Сообщений: 4,213
Завершенные тесты: 3
02.08.2013, 18:01 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);
0
art1535
7 / 7 / 3
Регистрация: 19.02.2013
Сообщений: 76
02.08.2013, 18:01  [ТС] 6
Просто мне тогда не понятно одно: если пользоваться способом
C++
1
2
3
    char arr[]={'A','B', 'C', 'D', 'F'};
    vector<char>ivec;
    ivec.insert(ivec.end(),arr,arr+5);
зачем тогда вообще нужен вектор? Можно ведь и пользоваться только этим массивом
0
Somebody
2799 / 1610 / 251
Регистрация: 03.12.2007
Сообщений: 4,213
Завершенные тесты: 3
02.08.2013, 18:04 7
Цитата Сообщение от art1535 Посмотреть сообщение
зачем тогда вообще нужен вектор? Можно ведь и пользоваться только этим массивом
Пользуйся массивом, кто же мешает. Ты сам хотел vector.

Добавлено через 37 секунд
Ещё string есть...
0
art1535
7 / 7 / 3
Регистрация: 19.02.2013
Сообщений: 76
02.08.2013, 18:04  [ТС] 8
Со string все понятно хочется более по-человечески
0
0x10
2571 / 1751 / 288
Регистрация: 24.11.2012
Сообщений: 4,377
02.08.2013, 18:06 9
art1535, а почему вектор "по-человечески", а string - нет? О_о
0
art1535
7 / 7 / 3
Регистрация: 19.02.2013
Сообщений: 76
02.08.2013, 18:07  [ТС] 10
Вектор по-человечески
0
0x10
2571 / 1751 / 288
Регистрация: 24.11.2012
Сообщений: 4,377
02.08.2013, 18:16 11
art1535, сорри, я там сразу фигню написал, исправил.
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
02.08.2013, 18:16 12
Цитата Сообщение от art1535 Посмотреть сообщение
зачем тогда вообще нужен вектор?
Вектор - класс с автоматческим управлением памятью, в отличие от обычного массива. Плюс готовые методы для использования.
1
art1535
7 / 7 / 3
Регистрация: 19.02.2013
Сообщений: 76
02.08.2013, 18:18  [ТС] 13
alsav22, после чистого С, к некоторым особенностям в С++ до сих не привыкну
0
Tulosba
:)
Эксперт С++
4749 / 3243 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.08.2013, 18:22 14
Цитата Сообщение от art1535 Посмотреть сообщение
к некоторым особенностям в С++
Это не особенности. Это ООП.
0
art1535
7 / 7 / 3
Регистрация: 19.02.2013
Сообщений: 76
02.08.2013, 18:35  [ТС] 15
Остановился все-таки на этом варианте

C++
1
2
3
    char arr[]={'A','B', 'C', 'D', 'F'};
    vector<char> alf;
    alf.insert( alf.begin(), arr, arr + sizeof( arr ) );
0
ForEveR
В астрале
Эксперт С++
7996 / 4755 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
02.08.2013, 18:38 16
art1535, Зачем сначала конструировать пустой вектор, а затем вставлять значения?
C++
1
2
char arr[]={'A','B', 'C', 'D', 'F'};
 vector<char> alf(arr, arr + sizeof(arr) / sizeof(*arr));
1
Tulosba
:)
Эксперт С++
4749 / 3243 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.08.2013, 18:43 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) );
0
0x10
2571 / 1751 / 288
Регистрация: 24.11.2012
Сообщений: 4,377
02.08.2013, 18:45 18
Говорили уже, но, блин.
C++
1
std::string s = "abc";
Я не понимаю чем не устраивает этот вариант.
0
art1535
7 / 7 / 3
Регистрация: 19.02.2013
Сообщений: 76
02.08.2013, 18:45  [ТС] 19
ForEveR, ого вот это уже здорово.

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

C++
1
arr + sizeof(arr) / sizeof(*arr)
0
ForEveR
В астрале
Эксперт С++
7996 / 4755 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
02.08.2013, 18:49 20
art1535, Говорим, что нам нужен указатель на arr + (размер массива / размер элемента), в случае с char можно убрать / sizeof(*arr).
1
02.08.2013, 18:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2013, 18:49

Инициализация *char в конструкторе
Хай эврибади! class A { private: int a; int b; char *str; public:...

Инициализация char в конструкторе
class Abit { public: Abit(); ~Abit(); protected: private: ...

Инициализация char в классе
Не понимаю, как поместить символьный массив в класс. На выводе получаются...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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