#include <utility>
#include <string>
#include <vector>
#include <iostream>
 
template<typename T>
void printVector(std::vector<T>& vec) {
 
    std::cout << "std::vector[ " << vec.size() << " ]( "; 
 
    for (size_t i = 0; i < vec.size(); i++) {
        std::cout << vec[i] << " ";
    }
 
    std::cout << ")" << std::endl;
}
 
int main() {
    std::pair<int, std::string> p = std::make_pair(2, "some_str");
    std::cout << p.first << " " << p.second << std::endl;
 
    std::pair<int, std::string> another = {69, "naughty"};
    std::cout << another.first << " " << another.second << std::endl;
 
    std::vector<int> vec = {10, 20, 30};
    vec.push_back(40);
    vec.push_back(50);
    vec.pop_back();
 
    std::vector<int> naughtyVec(10, 69); // Initial size 10 with all values 69
 
    printVector(vec);
    printVector(naughtyVec);
 
    std::vector<int> nu = vec; // Copy of the vec, O(N)
    
    return 0;
}