    #include <string>
    #include <array>
    #include <vector>
    #include <iostream>

    int main() {
        std::array<std::string, 3> stringarray;
        stringarray[0] = "hello";
        stringarray[1] = "world";
        // stringarray[2] contains an empty string.

        for (size_t i = 0; i < stringarray.size(); ++i) {
            std::cout << "stringarray[" << i << "] = " << stringarray[i] << "\n";
        }

        // Using a vector, which has a variable size.
        std::vector<std::string> stringvec;

        stringvec.push_back("world");
        stringvec.insert(stringvec.begin(), "hello");
        stringvec.push_back("greetings");
        stringvec.push_back("little bird");
        std::cout << "size " << stringvec.size()
                  << "capacity " << stringvec.capacity()
                  << "empty? " << (stringvec.empty() ? "yes" : "no")
                  << "\n";

        // remove the last element
        stringvec.pop_back();
        std::cout << "size " << stringvec.size()
                  << "capacity " << stringvec.capacity()
                  << "empty? " << (stringvec.empty() ? "yes" : "no")
                  << "\n";
 
        std::cout << "stringvec: ";
        for (auto& str : stringvec) {
            std::cout << "'" << str << "' ";
        }
        std::cout << "\n";

        // iterators and string concatenation
        std::string greeting = "";
        for (auto it = stringvec.begin(); it != stringvec.end(); ++it) {
            if (!greeting.empty()) // add a space between words
                greeting += ' ';
            greeting += *it;
        }
        std::cout << "stringvec combined :- " << greeting << "\n";
    }
