C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
C++ set get_allocator()C++ set get_allocator() function is used to return the copy of allocator object which helps to construct the set container. Syntaxallocator_type get_allocator() const; //until C++ 11 allocator_type get_allocator() const noexcept; //since C++ 11 ParameterNone Return valueReturns an allocator associated with set container. ComplexityConstant. Iterator validityNo changes. Data RacesThe container is accessed. Concurrently accessing the elements of set is safe. Exception SafetyThis function never throws exceptions. Example 1Let's see the simple example: #include <iostream> #include <set> using namespace std; int main(void) { set<double> m; double *p; p = m.get_allocator().allocate(3); //size of double is 8 cout << "Allocated size = " << sizeof(*p) * 4 << endl; return 0; } Output: Allocated size = 32 Example 2Let's see a simple example: #include <iostream> #include <set> using namespace std; int main () { set<int> myset; int * p; unsigned int i; // allocate an array of 5 elements using myset's allocator: p=myset.get_allocator().allocate(5); // assign some values to array for (i=0; i<5; i++) p[i]=(i+1)*10; cout << "The allocated array contains:"; for (i=0; i<5; i++) cout << ' ' << p[i]; cout << '\n'; myset.get_allocator().deallocate(p,5); return 0; } Output: The allocated array contains: 10 20 30 40 50 Example 3Let's see a simple example to check whether the allocators are interchangeable or not: #include <set> #include <iostream> int main( ) { using namespace std; set <int>::allocator_type s1_Alloc; set <int>::allocator_type s2_Alloc; set <double>::allocator_type s3_Alloc; set <int>::allocator_type s4_Alloc; // The following lines declare objects // that use the default allocator. set <int> s1; set <int, allocator<int> > s2; set <double, allocator<double> > s3; s1_Alloc = s1.get_allocator( ); s2_Alloc = s2.get_allocator( ); s3_Alloc = s3.get_allocator( ); cout << "The number of integers that can be allocated" << endl << "before free memory is exhausted: " << s2.max_size( ) << "." << endl; cout << "\nThe number of doubles that can be allocated" << endl << "before free memory is exhausted: " << s3.max_size( ) << "." << endl; // The following line creates a set s4 // with the allocator of multiset s1. set <int> s4( less<int>( ), s1_Alloc ); s4_Alloc = s4.get_allocator( ); // Two allocators are interchangeable if // storage allocated from each can be // deallocated by the other if( s1_Alloc == s4_Alloc ) { cout << "\nThe allocators are interchangeable." << endl; } else { cout << "\nThe allocators are not interchangeable." << endl; } return 0; } Output: The number of integers that can be allocated before free memory is exhausted: 461168601842738790. The number of doubles that can be allocated before free memory is exhausted: 461168601842738790. The allocators are interchangeable. Example 4Let's see a simple example: #include <iostream> #include <set> using namespace std; int main () { set < int > c ; int * p ; p = c . get_allocator () . allocate ( 2 ); p [ 0 ] = 42 ; p [ 1 ] = 43 ; cout << p [ 0 ] << ", " << p [ 1 ] << endl ; c . get_allocator () . deallocate ( p , 2 ); } Output: 42, 43
Next TopicSet operator==
|