2017-02-13 37 views
0

Я хочу создать объект внутри std :: vector, избегая его создания, а затем push_back() его. Я слышал о emplace_back(), но я не мог использовать его в этой ситуации: Создайте объект внутри вектора, который содержится другим

std::vector<std::vector<std::string>> info; 

Тогда, кто знает, как создать данные строки внутри второго вектора и этот вектор в последней позиции первого ? Ничего подобного этому, но без использования info2 и push_back():

std::vector<std::string> info2; 
info2.emplace_back("a"); 
info.push_back(info2); 
+3

Я бы рекомендовал вам избежать этих «двумерных векторов», а затем ваша проблема исчезнет. Либо сохраните 'std :: map >' (если ваше внутреннее измерение не исправлено) или сохраните 'std :: vector ' и выложите вокруг него координированный перевод (если ваше внутреннее измерение фиксированный). Тогда у вас нет ненужного создания объекта, и это именно та проблема, с которой вы сталкиваетесь! –

ответ

1

Вы можете emplace_back целый вектор, как этот

info.emplace_back(std::vector<string>{"a"}); 

Однако дело с вектором векторов является громоздким, так вы можете переосмыслите свой дизайн, как это было предложено в Lightness Races на орбите.

 Смежные вопросы

  • Нет связанных вопросов^_^