// insert(iter, val)
// 0 1 2
cout << *vec.insert(vec.begin(), 3) << endl; // 3
// 3 0 1 2
// insert(iter, pos, val)
// 0 1 2
cout << *vec.insert(vec.begin(), 2, 3) << endl; // 3
// 3 3 0 1 2
// insert(iter, anothervector.iter1, anothervector.iter2)
// 0 1 2
vector<int> anothervector(2, 3);
cout << *vec.insert(vec.begin() + 2, anothervector.begin(), anothervector.end()) << endl; // 3
// 0 1 3 3 2
// 0 1 2
int arr[] = { 3, 4, 5 };
cout << *vec.insert(vec.begin(), arr, arr + 3) << endl; // 3
// 3 4 5 0 1 2