Можно ли инициализировать вектор STL с 10 из того же целого числа в списке инициализаторов? Мои попытки до сих пор подвели меня.
Можно ли инициализировать вектор STL с 10 из того же целого числа в списке инициализаторов?
Ответ 1
Я думаю, вы имеете в виду это:
struct test {
std::vector<int> v;
test(int value) : v( 100, value ) {}
};
Ответ 2
Используйте соответствующий конструктор, который принимает размер и значение по умолчанию.
int number_of_elements = 10;
int default_value = 1;
std::vector<int> vec(number_of_elements, default_value);
Ответ 3
Если вы используете С++ 11 и GCC, вы можете сделать это:
vector<int> myVec () {[0 ... 99] = 1};
Он называется инициализацией ранжирования и является расширением GCC.
Ответ 4
Вы можете сделать это с помощью конструктора std::vector
:
vector(size_type count,
const T& value,
const Allocator& alloc = Allocator());
Что требуется повторять count
и value
.
Если вы хотите использовать списки инициализаторов, вы можете написать:
const int x = 5;
std::vector<int> vec {x, x, x, x, x, x, x, x, x, x};
Ответ 5
Список инициализации для вектора поддерживается из С++ 0x. Если вы скомпилировали с С++ 98
int number_of_elements = 10;
int default_value = 1;
std::vector<int> vec(number_of_elements, default_value);
Ответ 6
можете ли вы опубликовать то, что вы делаете
int i = 100;
vector<int> vInts2 (10, i);
vector<int>::iterator iter;
for(iter = vInts2.begin(); iter != vInts2.end(); ++iter)
{
cout << " i " << (*iter) << endl;
}