2015-03-15 3 views
0

Это может быть использован для создания экземпляра 2d вектора определенного размера:Создание экземпляра пары

#define rows 5 
#define columns 7 

std::vector<std::vector<int>> v2d(rows, std::vector<int>(columns)); 

Что бы эквивалент для создания экземпляра пары, которая включает в себя size_t и вектор, который будет создан с начальным размером?

std::pair<size_t, std::vector<int>> psv(...(columns)...); 

Благодарим за помощь, за вектор этого синтаксиса, похоже, работает.

std::vector<std::pair<size_t, std::vector<int>>>vpiv(rows, 
    std::pair<size_t, std::vector<int>>(0, std::vector<int>(columns))); 
+3

Пожалуйста, прекрати '# define'ing контейнера размеров. В C++ нет необходимости в этом. Просто используйте обычную переменную. Вы можете сделать это 'const' или' constexpr', если хотите. – 5gon12eder

+0

Почему вы хотите сохранить начальный размер? – jaymmer

+0

@jaymmer Хм мне было непонятно, как первое значение было связано со вторым. –

ответ

1
std::pair<size_t, std::vector<int>> psv(my_size_t, std::vector<int>(my_vec_size)); 

В качестве альтернативы (до C++ 11 std::make_pair может сделать некоторые дополнительные копии).

auto psv = std::make_pair(static_cast<size_t>(my_size_t), std::vector<int>(my_vec_size)); 

Бросок, чтобы обеспечить первый тип определенно size_t. Его можно опустить, если my_size_t уже имеет тип size_t.

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