Вы можете кратко инициализировать vector<string>
из статически созданного массива char*
:
char* strarray[] = {"hey", "sup", "dogg"};
vector<string> strvector(strarray, strarray + 3);
Кстати, это копирует все строки, поэтому вы используете вдвое больше памяти. Вы можете использовать предложение Уилла Дина, чтобы заменить магическое число 3 здесь на arraysize (str_array) - хотя я помню, что был какой-то особый случай, когда эта конкретная версия массива могла бы сделать что-то плохое (извините, я не могу сразу вспомнить детали) , Но это очень часто работает правильно.
Кроме того, если вы действительно любите одну строку, вы можете определить макрос с переменным значением, чтобы работала одна строка, такая как DEFINE_STR_VEC(strvector, "hi", "there", "everyone");
.