Containers in C++


Containers are the backbone of the Standard Template Library (STL) in C++. They provide structures to store and organize data efficiently. This article covers the most commonly used containers: Vector, List, Deque, Stack, Queue, Set, and Map.

1. Vector

A vector is a dynamic array that can grow or shrink in size. It provides fast access to elements and is widely used when the number of elements is not fixed.

Example:

    #include <iostream>
    #include <vector>
    using namespace std;

    int main() {
        vector numbers = {1, 2, 3, 4, 5};
        numbers.push_back(6);
        for (int num : numbers) {
            cout << num << " ";
        }
        return 0;
    }
        

2. List

A list is a doubly-linked list that allows fast insertion and deletion at any position but slower access compared to a vector.

Example:

    #include <iostream>
    #include <list>
    using namespace std;

    int main() {
        list numbers = {10, 20, 30};
        numbers.push_back(40);
        numbers.push_front(5);
        for (int num : numbers) {
            cout << num << " ";
        }
        return 0;
    }
        

3. Deque

A deque (double-ended queue) allows fast insertion and deletion at both ends.

Example:

    #include <iostream>
    #include <deque>
    using namespace std;

    int main() {
        deque numbers = {20, 30};
        numbers.push_front(10);
        numbers.push_back(40);
        for (int num : numbers) {
            cout << num << " ";
        }
        return 0;
    }
        

4. Stack

A stack follows the LIFO (Last In, First Out) principle. Elements are added and removed from the top of the stack.

Example:

    #include <iostream>
    #include <stack>
    using namespace std;

    int main() {
        stack numbers;
        numbers.push(10);
        numbers.push(20);
        numbers.push(30);
        while (!numbers.empty()) {
            cout << numbers.top() << " ";
            numbers.pop();
        }
        return 0;
    }
        

5. Queue

A queue follows the FIFO (First In, First Out) principle. Elements are added at the back and removed from the front.

Example:

    #include <iostream>
    #include <queue>
    using namespace std;

    int main() {
        queue numbers;
        numbers.push(10);
        numbers.push(20);
        numbers.push(30);
        while (!numbers.empty()) {
            cout << numbers.front() << " ";
            numbers.pop();
        }
        return 0;
    }
        

6. Set

A set stores unique elements in sorted order. It does not allow duplicates.

Example:

    #include <iostream>
    #include <set>
    using namespace std;

    int main() {
        set numbers = {30, 20, 10, 40};
        numbers.insert(20); // Duplicate, won't be added
        for (int num : numbers) {
            cout << num << " ";
        }
        return 0;
    }
        

7. Map

A map stores key-value pairs in sorted order by the keys. Keys are unique.

Example:

    #include <iostream>
    #include <map>
    using namespace std;

    int main() {
        map ages;
        ages["Alice"] = 25;
        ages["Bob"] = 30;
        ages["Charlie"] = 20;
        for (auto pair : ages) {
            cout << pair.first << ": " << pair.second << endl;
        }
        return 0;
    }
        

Conclusion

C++ containers provide various ways to organize and manage data, each with its unique characteristics and use cases. Understanding their features helps in choosing the right container for specific tasks.





Advertisement