add

Monday 13 March 2017

namespace c++ explanation with examples



C++ Standard Library:

In the C++ programming language, the C++ Standard Library is a collection of classes and functions, which are written in the core language and part of the C++ ISO Standard itself.The C++ Standard Library provides several generic containers, functions to utilize and manipulate these containers, function objects, generic strings and streams (including interactive and file I/O), support for some language features, and functions for everyday tasks such as finding the square root of a number. The C++ Standard Library also incorporates 18 headers of the ISO C90 C standard library ending with ".h", but their use is deprecated. No other headers in the C++ Standard Library end in ".h". Features of the C++ Standard Library are declared within the std namespace.

The C++ Standard Library is based upon conventions introduced by the Standard Template Library (STL), and has been influenced by research in generic programming and developers of the STL such as Alexander Stepanov and Meng Lee. Although the C++ Standard Library and the STL share many features, neither is a strict superset of the other.
A noteworthy feature of the C++ Standard Library is that it not only specifies the syntax and semantics of generic algorithms, but also places requirements on their performance. These performance requirements often correspond to a well-known algorithm, which is expected but not required to be used. In most cases this requires linear time O(n) or linearithmic time O(n log n), but in some cases higher bounds are 

allowed, such as quasilinear time O(n log2 n) for stable sort (to allow in-place merge sort). Previously sorting was only required to take O(n log n) on average, allowing the use of quicksort, which is fast in practice but has poor worst-case performance, but introsort was introduced to allow both fast average performance and optimal worst-case complexity, and as of C++11, sorting is guaranteed to be at worst linearithmic. In other cases requirements remain laxer, such as selection, which is only required to be linear on average (as in quick select), not requiring worst-case linear as in introselect.
The C++ Standard Library underwent ISO standardization as part of the C++ ISO Standardization effort, and is undergoing further work regarding standardization of expanded functionality.

std::list:

 

std::list is a container that supports constant time insertion and removal of elements from anywhere in the container. Fast random access is not supported. It is usually implemented as a doubly-linked list. Compared to std::forward_list this container provides bidirectional iteration capability while being less space efficient.
Addition, removal and moving the elements within the list or across several lists does not invalidate the iterators or references. An iterator is invalidated only when the corresponding element is deleted. 

std::list meets the requirements of Container, Al locator Aware Container, Sequence Container and Reversible Container.

Template parameters


-
The type of the elements.
T must meet the requirements of Copy Assignable and Copy Constructible.
The requirements that are imposed on the elements depend on the actual operations performed on the container. Generally, it is required that element type is a complete type and meets the requirements of Erasable, but many member functions impose stricter requirements.
The requirements that are imposed on the elements depend on the actual operations performed on the container. Generally, it is required that element type meets the requirements of Erasable, but many member functions impose stricter requirements. This container (but not its members) can be instantiated with an incomplete element type if the allocator satisfies the allocator completeness requirements.
Allocator
-
An allocator that is used to acquire/release memory and to construct/destroy the elements in that memory. The type must meet the requirements of Allocator. The behavior is undefined if Allocator::value_type is not the same as T.

Member types

Member type
Definition
value_type
T
allocator_type
Allocator
size_type
Unsigned integer type (usually std::size_t)
difference_type
Signed integer type (usually std::ptrdiff_t)
reference
Allocator::reference
value_type&

const_reference
Allocator::const_reference

const value_type&
pointer
Allocator::pointer
std::allocator_traits<Allocator>::pointer
const_pointer
Allocator::const_pointer
std::allocator_traits<Allocator>::const_pointer
iterator
BidirectionalIterator
const_iterator
Constant bidirectional iterator
reverse_iterator
std::reverse_iterator<iterator>
const_reverse_iterator
std::reverse_iterator<const_iterator>

Member functions

(constructor)
constructs the list
(public member function)
(destructor)
destructs the list
(public member function)
operator=
assigns values to the container
(public member function)
assign
assigns values to the container
(public member function)
get_allocator
returns the associated allocator
(public member function)
Element access
front
access the first element
(public member function)
back
access the last element
(public member function)
Iterators
begin cbegin
returns an iterator to the beginning
(public member function)
end cend
returns an iterator to the end
(public member function)
rbegin crbegin
returns a reverse iterator to the beginning
(public member function)
rend crend
returns a reverse iterator to the end
(public member function)
Capacity
empty
checks whether the container is empty
(public member function)
size
returns the number of elements
(public member function)
max_size
returns the maximum possible number of elements
(public member function)
Modifiers
clear
clears the contents
(public member function)
insert
inserts elements
(public member function)
emplace

constructs element in-place
(public member function)
erase
erases elements
(public member function)
push_back
adds an element to the end
(public member function)
emplace_back
constructs an element in-place at the end
(public member function)
pop_back
removes the last element
(public member function)
push_front
inserts an element to the beginning
(public member function)
emplace_front
constructs an element in-place at the beginning
(public member function)
pop_front
removes the first element
(public member function)
resize
changes the number of elements stored
(public member function)
swap
swaps the contents
(public member function)
Operations
merge
merges two sorted lists
(public member function)
splice
moves elements from another list
(public member function)
removeremove_if
removes elements satisfying specific criteria
(public member function)
reverse
reverses the order of the elements
(public member function)
unique
removes consecutive duplicate elements
(public member function)
sort
sorts the elements
(public member function)
Non-member functions
operator==operator!=operator<operator<=operator>operator>=
lexicographically compares the values in the list
(function template)
std::swap(std::list)
specializes the std::swap algorithm
(function template)
Example
Run this code
#include <algorithm>
#include <iostream>
#include <list>

int main()
{
    // Create a list containing integers

    std::list<int> l = { 7, 5, 16, 8 };

    // Add an integer to the front of the list

    l.push_front(25);
    // Add an integer to the back of the list

    l.push_back(13);

    // Insert an integer before 16 by searching

    auto it = std::find(l.begin(), l.end(), 16);
    if (it != l.end()) {
        l.insert(it, 42);
    }

    // Iterate and print values of the list

    for (int n : l) {
        std::cout << n << '\n';
    }
}
Output:
25
7
5
42
16
8
13

0 comments:

Post a Comment