
- C++ Library - Home
- C++ Library - <fstream>
- C++ Library - <iomanip>
- C++ Library - <ios>
- C++ Library - <iosfwd>
- C++ Library - <iostream>
- C++ Library - <istream>
- C++ Library - <ostream>
- C++ Library - <sstream>
- C++ Library - <streambuf>
- C++ Library - <atomic>
- C++ Library - <complex>
- C++ Library - <exception>
- C++ Library - <functional>
- C++ Library - <limits>
- C++ Library - <locale>
- C++ Library - <memory>
- C++ Library - <new>
- C++ Library - <numeric>
- C++ Library - <regex>
- C++ Library - <stdexcept>
- C++ Library - <string>
- C++ Library - <thread>
- C++ Library - <tuple>
- C++ Library - <typeinfo>
- C++ Library - <utility>
- C++ Library - <valarray>
- The C++ STL Library
- C++ Library - <array>
- C++ Library - <bitset>
- C++ Library - <deque>
- C++ Library - <forward_list>
- C++ Library - <list>
- C++ Library - <map>
- C++ Library - <multimap>
- C++ Library - <queue>
- C++ Library - <priority_queue>
- C++ Library - <set>
- C++ Library - <stack>
- C++ Library - <unordered_map>
- C++ Library - <unordered_set>
- C++ Library - <vector>
- C++ Library - <algorithm>
- C++ Library - <iterator>
- The C++ Advanced Library
- C++ Library - <any>
- C++ Library - <barrier>
- C++ Library - <bit>
- C++ Library - <chrono>
- C++ Library - <cinttypes>
- C++ Library - <clocale>
- C++ Library - <condition_variable>
- C++ Library - <coroutine>
- C++ Library - <cstdlib>
- C++ Library - <cstring>
- C++ Library - <cuchar>
- C++ Library - <charconv>
- C++ Library - <cfenv>
- C++ Library - <cmath>
- C++ Library - <ccomplex>
- C++ Library - <expected>
- C++ Library - <format>
- C++ Library - <future>
- C++ Library - <flat_set>
- C++ Library - <flat_map>
- C++ Library - <filesystem>
- C++ Library - <generator>
- C++ Library - <initializer_list>
- C++ Library - <latch>
- C++ Library - <memory_resource>
- C++ Library - <mutex>
- C++ Library - <mdspan>
- C++ Library - <optional>
- C++ Library - <print>
- C++ Library - <ratio>
- C++ Library - <scoped_allocator>
- C++ Library - <semaphore>
- C++ Library - <source_location>
- C++ Library - <span>
- C++ Library - <spanstream>
- C++ Library - <stacktrace>
- C++ Library - <stop_token>
- C++ Library - <syncstream>
- C++ Library - <system_error>
- C++ Library - <string_view>
- C++ Library - <stdatomic>
- C++ Library - <variant>
- C++ STL Library Cheat Sheet
- C++ STL - Cheat Sheet
- C++ Programming Resources
- C++ Programming Tutorial
- C++ Useful Resources
- C++ Discussion
C++ scoped_allocator::outer_allocator() Function
The std::scoped_allocator::outer_allocator() function in C++, is used to access the outermost allocator in a nested scoped_allocator_adaptor. The scoped_allocator_adaptor is designed to handle the memory allocations for nested containers, ensuring that all the elements share the same allocator.
This functions returns the reference to the outermost allocator, which is responsible for managing memory at higher level. It is used when working with the nested containers where each level may require different allocation strategies.
Syntax
Following is the syntax for std::scoped_allocator::outer_allocator() function.
outer_allocator_type& outer_allocator() noexcept; or const outer_allocator_type& outer_allocator() const noexcept;
Parameters
This function does not accepts any parameters.
Return Value
This function returns a reference to the outer allocator.
Example 1
Let's look at the following example, where we are going to use the scoped allocator to handle the inner and outer allocator, then we used the outer_allocator() to allocate memory for the outer container.
#include <iostream> #include <vector> #include <memory> #include <scoped_allocator> int main() { std::vector < int > x = {11,12,23}; std::vector < std::vector < int >> y; std::scoped_allocator_adaptor < std::allocator < std::vector < int >>> z; auto outer_allocator = z.outer_allocator(); y.push_back(x); std::cout << "Result : " << y.size() << std::endl; return 0; }
Output
Output of the above code is as follows −
Result : 1
Example 2
Consider the following example, where we are going to use the outer_allocator() to allocate memory for a nested container.
#include <iostream> #include <vector> #include <memory> #include <scoped_allocator> int main() { std::vector < int > x = {121,232}; std::vector < std::vector < int >> y; std::scoped_allocator_adaptor < std::allocator < std::vector < int >>> z; auto outer_allocator = z.outer_allocator(); y.push_back(x); std::cout << "Outer vector size: " << y.size() << std::endl; std::cout << "Inner vector size: " << y[0].size() << std::endl; return 0; }
Output
Output of the above code is as follows −
Outer vector size: 1 Inner vector size: 2