Suppose we have some class:
class MyClass {
int value;
public:
MyClass() {
value = 42;
}
};
std::vector<MyClass> arr(10);will build 10 copies by default MyClass, all with value = 42.
, 10 . , arr[0].some_function(), : MyClass , . some_function(), value == 42, , value . .
++ . , . std::vector<MyClass> arr(10); , .
, std::array , . , std::array<MyClass, 10> arr; 10 MyClass value = 42. , unsigned, .
: std::vector::reserve. :
std::vector<MyClass> arr;
arr.reserve(10);
10 MyClass s, . arr[0] arr[5]; arr (arr.size() - 0, ). , push_back emplace_back:
arr.push_back(MyClass{});
. , arr std::rand, std::generate_n std::back_inserter:
std::vector<unsigned> arr;
arr.reserve(10);
std::generate_n(std::back_inserter(arr), 10, std::rand);
, , arr , begin()/end() :
std::vector<unsigned> arr{values.begin(), values.end()};