Как вывести vector string c

Displaying a vector of strings in C++

I’m sorry if this is a repeat question but I already tried to search for an answer and came up empty handed. So basically I just want to add strings (single words) to the back of a vector and then display the stored strings as a single string. I am quite the rookie.

Why doesn’t this work?

EDIT

So my new program works. It just puts values at the back of a vector and prints them out 8 words to a line. I know there’s easier ways but I’m just learning vectors and I’m going in baby steps. Thanks for the help guys.

6 Answers 6

Because userString is empty. You only declare it

but never add anything, so the for loop won’t even run.

although it is not clear why you need the vector at all:

If you don’t want to have a fixed limit on the number of input words, you can use std::getline in a while loop, checking against a certain input, e.g. «q» :

This will add words to sentence until you type «q».

You have to insert the elements using the insert method present in vectors STL, check the below program to add the elements to it, and you can use in the same way in your program.

You ask two questions; your title says «Displaying a vector of strings», but you’re not actually doing that, you actually build a single string composed of all the strings and output that.

Your question body asks «Why doesn’t this work».

will print exactly nothing.

So your loop executes exactly no iterations, leaving userString and sentence empty.

Lastly, your code has absolutely zero reason to use a vector. The fact that you used «decltype(userString.size())» instead of «size_t» or «auto», while claiming to be a rookie, suggests you’re either reading a book from back to front or you are setting yourself up to fail a class.

So to answer your question at the end of your post: It doesn’t work because you didn’t step through it with a debugger and inspect the values as it went. While I say it tongue-in-cheek, I’m going to leave it out there.

Источник

Класс vector

Класс вектора стандартной библиотеки C++ является шаблоном класса для контейнеров последовательности. Вектор хранит элементы заданного типа в линейном упорядочении и обеспечивает быстрый произвольный доступ к любому элементу. Вектор является предпочтительным контейнером для последовательности, когда производительность произвольного доступа имеет уровень «Премиум».

Синтаксис

Параметры

Type
Тип данных элементов, сохраняемых в векторе.

Комментарии

Для векторов время выполнения вставок и удалений элементов в конце последовательности является постоянной величиной. Время вставки и удаления элементов в середине вектора меняется линейно. Контейнер класса выполняется быстрее при вставке и удалении в начале и в конце последовательности. Контейнер класса выполняется быстрее при вставке и удалении в любом месте в последовательности.

Расширение вектора происходит, когда функции-члену требуется увеличить последовательность в объекте вектора сверх его текущей емкости. Другие операции вставки и стирания могут изменять различные адреса хранения внутри последовательности. Во всех таких случаях итераторы или ссылки, указывающие на изменившиеся части последовательности, становятся недействительными. Если расширения не происходит, действительными остаются только итераторы и ссылки перед точкой вставки или удаления.

Ссылочный класс — это вложенный класс, объекты которого могут предоставлять ссылки на элементы (одиночные биты) внутри vector объекта.

Члены

Конструкторы

Определения типов

ИмяОписание
[allocator_type] (#allocator_type)Тип, представляющий класс allocator для объекта вектора.
const_iteratorТип, предоставляющий итератор произвольного доступа, который может читать элемент const в векторе.
const_pointerТип, предоставляющий указатель на элемент const в векторе.
const_referenceТип, предоставляющий ссылку на const элемент, хранящийся в векторе. Он используется для чтения и выполнения const операций.
const_reverse_iteratorТип, предоставляющий итератор произвольного доступа, который может читать любой элемент const в векторе.
difference_typeТип, представляющий различие между адресами двух элементов в векторе.
iteratorТип, предоставляющий итератор произвольного доступа, который может читать или изменять любой элемент в векторе.
pointerТип, предоставляющий указатель на элемент в векторе.
referenceТип, предоставляющий ссылку на элемент, хранящийся в векторе.
reverse_iteratorТип, предоставляющий итератор произвольного доступа, который может читать или изменять любой элемент в обратном векторе.
size_typeТип, считающий количество элементов в векторе.
value_typeТип, представляющий тип данных, хранящихся в векторе.

Функции

Операторы

ИмяОписание
operator[]Возвращает ссылку на элемент вектора в указанной позиции.
operator=Заменяет элементы вектора копией другого вектора.

allocator_type

Тип, представляющий класс распределителя для объекта вектора.

Комментарии

Пример

Пример использования см. в разделе get_allocator.

assign

Удаляет вектор и копирует указанные элементы в пустой вектор.

Параметры

first
Положение первого элемента в диапазоне копируемых элементов.

last
Положение первого элемента за пределами диапазона копируемых элементов.

count
Количество копий элемента, вставляемых в вектор.

value
Значение элемента, вставляемого в вектор.

init_list
Объект initializer_list, содержащий вставляемые элементы.

Комментарии

assign Во-первых, удаляет все существующие элементы в векторе. Затем assign либо Вставляет указанный диапазон элементов из исходного вектора в вектор, либо вставляет копии нового указанного элемента value в вектор.

Пример

Возвращает ссылку на элемент в заданном положении в векторе.

Параметры

position
Номер нижнего индекса или позиции элемента, на который включается ссылка в векторе.

Возвращаемое значение

Ссылка на элемент, индекс которого указан в аргументе. Если position значение больше размера вектора, at вызывает исключение.

Комментарии

Пример

Возвращает ссылку на последний элемент вектора.

Возвращаемое значение

Последний элемент вектора. Если вектор пуст, возвращаемое значение не определено.

Комментарии

При компиляции с помощью, _ITERATOR_DEBUG_LEVEL заданного как 1 или 2, возникает ошибка времени выполнения при попытке получить доступ к элементу в пустом векторе. Дополнительные сведения см. в разделе проверенные итераторы.

Пример

begin

Возвращает итератор произвольного доступа, указывающий на первый элемент в векторе.

Возвращаемое значение

Комментарии

Пример

capacity

Возвращает число элементов, которое вектор может содержать без выделения дополнительного пространства.

Возвращаемое значение

Текущая длина хранилища, выделенного вектору.

Комментарии

Функция-член resize будет более эффективной, если выделить достаточно памяти для ее размещения. Используйте функцию члена, reserve чтобы указать объем выделенной памяти.

Пример

cbegin

Возвращаемое значение

Комментарии

С возвращаемым значением cbegin элементы в диапазоне нельзя изменять.

Возвращает const итератор после конца, указывающий на элемент, следующий за последним элементом вектора.

Возвращаемое значение

Комментарии

cend используется для проверки того, прошел ли итератор конец диапазона.

Значение, возвращаемое, cend не должно быть разыменовано. Используйте его только для сравнения.

clear

Очищает элементы вектора.

Пример

const_iterator

Тип, предоставляющий итератор произвольного доступа, который может читать элемент const в векторе.

Комментарии

Тип const_iterator нельзя использовать для изменения значения элемента.

Пример

const_pointer

Тип, предоставляющий указатель на элемент const в векторе.

Комментарии

Тип const_pointer нельзя использовать для изменения значения элемента.

Для доступа к элементу вектора обычно используется iterator.

const_reference

Тип, предоставляющий ссылку на const элемент, хранящийся в векторе. Он используется для чтения и выполнения const операций.

Комментарии

Тип const_reference нельзя использовать для изменения значения элемента.

Пример

const_reverse_iterator

Тип, предоставляющий итератор произвольного доступа, который может читать любой элемент const в векторе.

Комментарии

Тип const_reverse_iterator не может изменять значение элемента и используется для прохода по вектору в обратную.

Пример

crbegin

Возвращает константный итератор, который указывает на первый элемент в обратном векторе.

Возвращаемое значение

Комментарии

При возвращении значения crbegin vector объект не может быть изменен.

Пример

crend

Возвращает обратный реверсивный const итератор, указывающий на элемент, следующий за последним элементом в инвертированном векторе.

Возвращаемое значение

const Обратный завершающий итератор для инвертированного вектора. Он указывает элемент, следующий за последним элементом в инвертированном векторе, который совпадает с элементом перед первым элементом неинвертированного вектора. Этот элемент является заполнителем и не должен быть разыменован. Используйте его только для сравнения.

Комментарии

При возвращении значения crend (с соответствующим уменьшением) vector объект изменить нельзя.

Значение, возвращаемое, crend не должно быть разыменовано. Используйте его только для сравнения.

Пример

Возвращает указатель на первый элемент в векторе.

Возвращаемое значение

Пример

difference_type

Тип, предоставляющий разницу между двумя итераторами, ссылающимися на элементы в одном и том же векторе.

Комментарии

difference_type также можно описать как число элементов между двумя указателями, так как указатель на элемент содержит его адрес.

Для доступа к элементу вектора обычно используется iterator.

Пример

emplace

Вставляет элемент, созданный на месте, в указанное положение в векторе.

Параметры

position
Место vector вставки первого элемента.

args
Аргументы конструктора. Функция определяет перегрузку конструктора, которую нужно вызвать, на основе переданных аргументов.

Возвращаемое значение

Комментарии

Любая операция вставки может быть дорогостоящей, см. раздел класс для обсуждения vector производительности.

Пример

emplace_back

Добавляет элемент, созданный на месте, в конец вектора.

Параметры

args
Аргументы конструктора. Функция определяет перегрузку конструктора, которую нужно вызвать, на основе переданных аргументов.

Пример

empty

Проверяет, пуст ли вектор.

Возвращаемое значение

true значение, если вектор пуст; false значение, если вектор не пуст.

Пример

Возвращает итератор после конца, указывающий на элемент, следующий за последним элементом вектора.

Возвращаемое значение

Комментарии

Пример

erase

Удаляет элемент или диапазон элементов в векторе из заданных позиций.

Параметры

position
Положение элемента, удаляемого из вектора.

first
Положение первого элемента, удаляемого из вектора.

last
Положение после последнего элемента, удаляемого из вектора.

Возвращаемое значение

Итератор, указывающий на первый элемент, оставшийся после удаленных элементов, или на указатель конца вектора, если такого элемента не существует.

Пример

front

Возвращает ссылку на первый элемент в векторе.

Возвращаемое значение

Ссылка на первый элемент в объекте вектора. Если вектор пуст, возвращаемое значение не определено.

Комментарии

При компиляции с помощью, _ITERATOR_DEBUG_LEVEL заданного как 1 или 2, возникает ошибка времени выполнения при попытке получить доступ к элементу в пустом векторе. Дополнительные сведения см. в разделе проверенные итераторы.

Пример

get_allocator

Возвращает копию объекта allocator, используемого для создания вектора.

Возвращаемое значение

Распределитель, используемый вектором.

Комментарии

Распределители для класса вектора определяют, как этот класс управляет хранилищем. Распределителей по умолчанию в классах контейнеров стандартной библиотеки C++ достаточно для большинства задач программирования. Написание и использование собственного класса распределителя является расширенной функцией C++.

Пример

insert

Вставляет элемент или несколько элементов или диапазон элементов в указанную позиции в вектор.

Параметры

position
Позиция в векторе, куда вставляется первый элемент.

value
Значение элемента, вставляемого в вектор.

count
Количество элементов, вставляемых в вектор.

first
Положение первого элемента в диапазоне копируемых элементов.

last
Положение первого элемента после диапазона копируемых элементов.

Возвращаемое значение

Две первые функции insert возвращают итератор, указывающий на положение вставки нового элемента в вектор.

Комментарии

Используемые в качестве предусловия first и last не должны быть итераторами в векторе, в противном случае поведение будет неопределенным. Любая операция вставки может быть дорогостоящей, см. раздел класс для обсуждения vector производительности.

Пример

iterator

Тип, предоставляющий итератор произвольного доступа, который может читать или изменять любой элемент в векторе.

Комментарии

Тип iterator можно использовать для изменения значения элемента.

Пример

max_size

Возвращает максимальную длину вектора.

Возвращаемое значение

Максимально возможная длина вектора.

Пример

operator[]

Возвращает ссылку на элемент вектора в указанной позиции.

Параметры

position
Позиция элемента вектора.

Возвращаемое значение

Если заданная позиция больше или равна размеру контейнера, результат не определен.

Комментарии

При компиляции с помощью параметра, _ITERATOR_DEBUG_LEVEL заданного как 1 или 2, возникает ошибка времени выполнения при попытке доступа к элементу за пределами вектора. Дополнительные сведения см. в разделе проверенные итераторы.

Пример

operator=

Заменяет элементы вектора копией другого вектора.

Параметры

Комментарии

Пример

pointer

Тип, предоставляющий указатель на элемент в векторе.

Комментарии

Тип pointer можно использовать для изменения значения элемента.

Пример

pop_back

Удаляет элемент в конце вектора.

Комментарии

Пример кода см. в разделе vector::push_back().

push_back

Добавляет элемент в конец вектора.

Параметры

value
Значение, назначаемое элементу, который добавляется в конец вектора.

Пример

rbegin

Возвращает итератор, указывающий на первый элемент в обратном векторе.

Возвращаемое значение

Обратный итератор произвольного доступа, указывающий на первый элемент в обратном векторе или на последний элемент в исходном векторе.

Комментарии

Пример

reference

Тип, предоставляющий ссылку на элемент, хранящийся в векторе.

Пример

Возвращает обратный реверсивный итератор, указывающий на элемент, следующий за последним элементом в инвертированном векторе.

Возвращаемое значение

Обратный завершающий итератор для инвертированного вектора. Он указывает элемент, следующий за последним элементом в инвертированном векторе, который совпадает с элементом перед первым элементом неинвертированного вектора. Этот элемент является заполнителем и не должен быть разыменован. Используйте его только для сравнения.

Комментарии

rend используется с обратным вектором точно так же, как end используется с вектором.

rend используется, чтобы проверить, достиг ли обратный итератор конца вектора.

Значение, возвращаемое, rend не должно быть разыменовано. Используйте его только для сравнения.

Пример

reserve

Резервирует минимальную длину хранилища для объекта вектора, при необходимости выделяя пространство.

Параметры

count
Минимальная длина хранилища, выделяемого для вектора.

Пример

resize

Определяет новый размер вектора.

Параметры

new_size
Новый размер вектора.

value
Значение инициализации новых элементов, добавленных в вектор, если новый размер больше исходного. Если значение опущено, новые объекты используют конструктор по умолчанию.

Комментарии

size отражает текущий размер вектора.

Пример

reverse_iterator

Тип, предоставляющий итератор произвольного доступа, который может читать или изменять любой элемент в обратном векторе.

Комментарии

Тип reverse_iterator используется для последовательного прохождения через вектор в обратную сторону.

Пример

shrink_to_fit

Удаляет лишнюю емкость.

Пример

Возвращает количество элементов в векторе.

Возвращаемое значение

Текущая длина вектора.

Пример

size_type

Тип, считающий количество элементов в векторе.

Пример

Меняет местами элементы двух векторов.

Параметры

Пример

value_type

Тип, представляющий тип данных, хранящихся в векторе.

Комментарии

Пример

vector

Конструирует вектор. Перегрузки создают вектор определенного размера или с элементами определенного значения. Или, как копия какого-либо другого вектора или его части. Некоторые перегрузки также позволяют указать распределитель для использования.

Параметры

allocator
Класс распределителя для использования с данным объектом. get_allocator Возвращает класс распределителя для объекта.

count
Количество элементов в создаваемом векторе.

value
Значение элементов в создаваемом векторе.

source
Вектор, для которого создаваемый вектор станет копией.

first
Положение первого элемента в диапазоне копируемых элементов.

last
Положение первого элемента за пределами диапазона копируемых элементов.

init_list
Объект, initializer_list содержащий копируемые элементы.

Комментарии

Все конструкторы хранят объект распределителя ( allocator ) и инициализируют вектор.

Первые два конструктора определяют пустой исходный вектор. Второй конструктор явно указывает тип распределителя ( allocator ) для использования.

Восьмой конструктор использует initializer_list, чтобы указать элементы.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *