# std::vector::swap

From cppreference.com
< cpp‎ | container‎ | vector

void swap( vector& other ); |  | (until C++17)
void swap( vector& other ) noexcept(/* see below */); |  | (since C++17)

Exchanges the contents of the container with those of `other`. Does not invoke any move, copy, or swap operations on individual elements.

All iterators and references remain valid. The past-the-end iterator is invalidated.

If std::allocator_traits<allocator_type>::propagate_on_container_swap::value is true, then the allocators are exchanged using an unqualified call to non-member `swap`. Otherwise, they are not swapped (and if get_allocator() != other.get_allocator(), the behavior is undefined). | (since C++11)

### Parameters

other | - | container to exchange the contents with

### Return value

(none)

### Exceptions

(none) | (until C++17)
`noexcept` specification: noexcept(std::allocator_traits<Allocator>::propagate_on_container_swap::value || std::allocator_traits<Allocator>::is_always_equal::value) | (since C++17)

### Complexity

Constant.

### See also

std::swap(std::vector) | specializes the std::swap algorithm (function template)

### Example

Run this code

    #include <vector>
    #include <iostream>

    void printVector(std::vector<int>& vec)
    {
        for (int a : vec)
        {
            std::cout << a << " ";
        }
    }

    int main()
    {
        std::vector<int> v1{1, 2, 3};
        std::vector<int> v2{7, 8, 9};

        std::cout << "v1: ";
        printVector(v1);

        std::cout << "\nv2: ";
        printVector(v2);

        std::cout << "\n-- SWAP\n";
        v2.swap(v1);

        std::cout << "v1: ";
        printVector(v1);

        std::cout << "\nv2: ";
        printVector(v2);
    }

Output:

    v1: 1 2 3
    v2: 7 8 9
    -- SWAP
    v1: 7 8 9
    v2: 1 2 3

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/container/vector/swap&oldid=72828"
Category:

- conditionally noexcept