diff --git a/languages/C++.txt b/languages/C++.txt new file mode 100644 index 0000000..262fb8e --- /dev/null +++ b/languages/C++.txt @@ -0,0 +1,485 @@ + +#DATA TYPES + 1)void - type with empty set of values.There is no structure assosciated with void except pointers. +std::nullptr_t is a special pointer that is not itself a pointer type. + + 2) int - stores an integer value . + 4 bytes C++ standard since C11. (for 16-bit OS its 2 bytes) + Hence,int value ranges from -2147483648 to 2147483647. + + 3) float - stores an decimal value. + 4 bytes . + + 4) char - stores a single character value(ASCII values) + 1 byte.(0 to 255) + + 5) bool - stores a boolean value.(true or false) + 1 byte. + stores a value 0 or 1 indicating tue or false. + +# MODIFIERS +C++ has modifiers for extending the limits of the basic data types for some advanced calculation.There are 2 types of Modifiers:- +1)Signedness + # signed - by default,target will have signed representation ,which means a variable can take negative values. + # unsigned - target data type will be unsigned means only positive(absolute) values will be taken by that type. + +2) Size + # short - Target data type will have a width of atleast 2 bytes.The data type is optimized for lower bounds using less space. + # long - Target data type will have a width of atleast 4 bytes. + # long long - Target data type will have a width of at least 8 bytes. + +Character Types + + 1) signed char + 2) unsigned char + 3) char + 4) wchar_t + +Float Types + 1) float + 2) double + 3) long double + +# DATA STRUCTURES +1) ARRAYS +to declare an array of any type : data_type name_of_array[size of array]; +array cannot be re-intialized with the number of elements. + +2) LINKED LIST +a linked list in cpp is built-in in the form of vectors +to declare an vector(linked list) in cpp : vector name; +you have to include vector library. #include + +3) STACK +to make a stack in cpp : stack name; +you have to include stack library .#include + +4) QUEUE +to make a queue in cpp : queue name; +you have to include queue library .#include + +cout<<"Anything"<>x; +* This inputs data from user and stores in specified variables. + +cin.getline(variable,characters in it) +* This is specially used for white sapced (Spaces) input. + + +* Declare a variable named x +DataType Description +int x; // Integer var named x +char x; // Character var stores one alphabet,numerics,special symbol and is one byte. +string x; // Characterd back to back +bool x; // Boolean value (1 or 0)(true or false) +float x; // Real values (decimal numbers) + +* + +#KEYWORDS (reserved words ,have special functionality).There are 97 keywords in C++ as of C20 standard. + 1) alignas -specifies the alignment requirement of a type or an object. + 2) alignof -queries alignment requirements of a type. + 3) and -logical and operator.(alternative to &&) + 4) and_eq -bitwise and operator .(alternative to &= ,x&=y or x=x&y) + 5) asm -embed assembly code within C++ program. + 6) atomic_cancel - + 7) atomic_commit - + 8) atomic_noexcept + 9) auto -automatic intializer or return type evaluated. + 10) bitand -alternative for bitwise and. (&) + 11) bitor -alternative for bitwise or. (|) + 12) bool -data type,capable of holding either true or false. + 13) break -terminating statement for, loops and switch statements. + 14) case -transfer control to one of the several statements depending on the value of conditions. + 15) catch -used in exception handling. + 16) char -data type character. + 17) char8_t -character data type 1 byte.(UTF-8 bit character) + 18) char16_t -character data type 2 bytes.(UTF-16 bit character) + 19) char32_t -character data type 4 bytes.(UTF-32 bit character) + 20) class -declaration of user-defined data types. + 21) compl -compliment operator.(alternative to ~) + 22) concept -named set of requirements. + 23) const -defines that the type is constant. + 24) consteval -specifies that a function is an immediate function. + 25) constexpr -specifies that the value of a variable or function can appear in constant expression. + 26) constinit -asserts that a variable has static intialization. + 27) const_cast -converts between types with different cv-qualification. + 28) continue -causes the remaining body of loops to be skipped. + 29) co_await -suspend operation until resumed. + 30) co_return -complete execution returning a value. + 31) co_yield -suspend execution returning a value. + 32) decltype -inspects the declared type of an entity or the type and value category of an expression. + 33) default -transfer control to one of the several statements,explicitly defaultedfunction definition. + 34) delete -destroy previously allocated objects,ill-formed functions. + 35) do -do-while loop.(executes a statement repeatedly,until condition is false) + 36) double -double precision floating point. + 37) dynamic_cast -safely converts pointers and references to classes along the inheritance hierarchy. + 38) else -if the bool value of if() is false then this block gets executed. + 39) enum -enumeration is a distinct type whose value is restricted to a range of values. + 40) explicit -specifies that a constructor or conversion function cannot be used for implicit conversions and copy initialization. + 41) export -exports all namespace-scope declaration. + 42) extern -applies the language specification for external linkages of function names,types and variables. + 43) false -a boolean literal indicating condition is not satisfied. + 44) float -data type declaration for floating point numbers. + 45) for -intializes counter once and iterates over and over again incrementing the counter each time ,till the condition is met.Range based for loop executes over a range. + 46) friend -a friend declaration appears in a class body to grants a function or another class access to private and protected members. + 47) goto -transfers control unconditionally. + 48) if -if the condition yields true then the block of code gets executed. + 49) inline -declares a function to be inline function . + 50) int -basic integer data type. + 51) long -target type will have a width of atleast 4 bytes. + 52) mutable -permits modification of class members even if they are declared const. + 53) namespace -provide a method for preventing name conflicts in large projects. + 54) new -creates and initializes objects with dynamic storage duration. + 55) noexcept -performs a compile time check that returns true if an expression is declared not to throw exceptions. + 56) not -alternative operator for ! + 57) not_eq -alternative operator for != + 58) null_ptr -denotes a pointer literal. + 59) operator -customizes C++ operators for operands of user-defined data type + 60) or -alternative to | operator. + 61) or_eq -alternative to |= operator. + 62) private -member specification of class/struct or union ,define the accessibility of subsequent members. + 63) protected -member specification of class/struct or union ,define the accessibility of subsequent members and inherited members of base class. + 64) public - member specification of class/struct or union ,define the accessibility of subsequent members to any subsequent class. + 65) reflexpr - + 66) register -automatic storage duration. + 67) reinterpret_cast -converts between types by reinterpreting the underlying bit pattern. + 68) requires -used to introduce a requires-clause, which specifies constraints on template arguments or on a function declaration. + 69) return -terminates the current function and gives back a specified value to the caller. + 70) short -target type will be optimized for space and will have a width of 2 bytes atleast. + 71) signed -target will have a signed representation. + 72) sizeof -used when actual size of object must be known. + 73) static -specified variables will have static storage duration. + 74) static_asset -performs compile-time assertion check. + 75) static_cast -converts between types using a combination of implicit and user-defined conversions. + 76) struct -class with public member accessibility by default. + 77) switch -transfer control to one of the several statements,depending on the value of condition. + 78) synchronized - + 79) template -template is an entity of family of either classes,functions or variables. + 80) this -a prvalue expression whose value is the address of the implicit object parameter. + 81) thread_local -thread storage duration. + 82) throw -signals and erroneous conditions and executes an error handler. + 83) true -a boolean literal indicating condition is satisfied. + 84) try -associates one or more exception handlers with a compound statement. + 85) typedef -creates an alias that can be used anywhere in place of a type name. + 86) typeid -used where the dynamic type or polymorphic object must be known and for static type identification. + 87) typename -similar word for class. + 88) union -a special class type that can hold only one of its non-static data members at a time. + 89) unsigned -target type will have a unsigned representation. + 90) using -introduces a name that is defines elsewhere into the declarative region . + 91) virtual -virtual functions or classes are defined using the virtual keyword. + 92) void -type with empty set of values. + 93) volatile -defines that the type is volatile. + 94) wchar_t -type for wide character representation. + 95) while -executes statements repeatedly untill the condition becomes false. + 96) xor -alternative operator for ^ + 97) xor_eq -alternative operatir for ^= + +#HEADER FILES + + #include +*This makes the compiler aware that other files are required for the complete working of this source code. + +List of Header files and their respective functions in C++ +1) General purpose library. + +Function name use cases return type Parameters +malloc allocates memory void* 1(number of bytes) +calloc allocates and zeroes memory void* 2(no.of obj,size of each obj) +realloc expands or shrinks previously allocated memory void* 2(pointer to mem area allocated,new size of array) +free deallocates previously allocated memory void 1(pointer to memory to deallocate) +atof converts a byte string to floating point value double 1(string) +atoll converts a byte string to integer value int/long/long long 1(string) +strtoull converts a byte string to unsigned integer long/long long 3(str ,str_end ,base) +strtold convert a byte string to a float point value float/double/lonng double 2(str ,str_end) +rand generate pseudo-random numbers int 0 +srand seeds pseudo-random number generation void 1(seed) +qsort sorts range of element with unspecified type. void 4(ptr ,count ,size ,comp) +bsearch searches an array for an element of unspecified type. void* 5(key ,ptr ,count ,size ,comp) +abs/llabs completes absolute value of an integer value. int/long/long long 1(int) +lldiv computes quotient and remainder of integer division obj 2(int,int) +abort abnormal program termination without cleaning up. void 0 +exit normal program termination with cleaning up. void 1(exit_code) +mblen returns number of bytes in next multibyte characters. int 2(ptr ,int) +mbtowc converts a next multilayer character to wide characters. int 3(int , ptr , ptr) +wctomb converts a next multilayer character to wide characters. int 2(wide char , ptr) + +2) general utility library + +operator& performs binary logic operations on bitsets.(and) +operator| performs binary logic operations on bitsets.(or) }obj 2(lhs ,rhs) +operator^ performs binary logic operations on bitsets.(xor) +operator>> performs stream output of bitsets +operator<< performs stream input of bitsets + +3) general utility library + +swap swaps the value of two objects. obj 2(a ,b) +exchange replaces the argument with a new value and returns its previous value. obj 2(obj , new_obj) +forward forwards a function argument. obj 1(obj) +move obtains an rvalue refrence. obj 1(obj) +std::get access an element of a pair. refernce (ptr) 1(obj) +operator<=> lexicographically compares the value in pair. boolean 2(lhs , rhs) +in_range checks if an integer value is in the range of a given integer type. boolean 1(obj) + +cmp_equal +cmp_not_equal +cmp_less } compares two integer values without value change caused by conversion. boolean 2(u , t ) +cmp_greater +cmp_less_equal +cmp_greater_equal + +4) provudes standard hash functions + +bind_front binds a variable number of arguments,in order,to a function object. obj 2(obj , args) +bind binds one or more arguments to a function object. obj 2(obj , args) +ref/cref creates a std::reference_wrapper with a type deduced from its argument. obj 1(ptr to obj) +invoke invokes any callable object with given arguments. obj 2(obj , args) + +5) C-style time/date utility. + +clock returns raw processor clock time since the program started. int (time) 0 +time returns the current time of the system since epoch. obj 1(ptr) +difftime computes the difference between times. int (time) 2(time_begin , time_end) +time_spec_get returns the calender time based on a given time base. int 2(ptr , base) + +6) C++ time/date utility + +opeartors ++ +- +* }implements arithmetic operations with durations as arguments. obj 4(lhs , rhs , d , s) +/ +% + +operators +== +< +> }compares two durations. obj 2(lhs , rhs ) +<= +>= +<=> + +duration cast converts a duration to another. time duration(int ,float,etc) 1(duration time) +floor converts a duration to another,rounding down. time duration(int ,float,etc) 1(duration time) +ceil converts a duration to another,rounding up. time duration(int ,float,etc) 1(duration time) +round converts a duration to another,rounding to nearest,ties to even. time duration(int ,float,etc) 1(duration time) +abs obtain the absolute value of the duration. time duration(int ,float,etc) 1(duration time) + +7) + +all_of +any_of } checks for any predicate is true for elements in a range. boolean 4(first ,last, policy ,predicate) +none_of + +for_each applies a function to a range of elements obj 4(first ,last, policy ,obj) +for_each_n applies a function to a range of n elements in a sequence integer 4(first ,last, policy ,obj) +count }returns the number of elements satisfying a criteria. integer 4(first ,last, policy ,predicate) +count_if +mismatch finds first position where two ranges differ. obj 6(first1 ,last1 ,first2 ,last2 ,policy ,binary predicate) +find +find_if }finds first element which satisfies specific criteria. obj 6(first, last ,policy ,valur,unary predicate,binary predicate) +find_if +find_if_not +find_end finds the last sequence of elements in a range. obj 6(first ,last ,s_first ,s_last, ppolicy ,binary predicate) +find_first_of searches for any one of a set of elements. +adjacent_find finds first two adjacent items that are equal. +search searches for a range of elements. +search_n searches a range for a number of consecutive copies of an element + +copy }copies a range of elements to a new location +copy_if +copy_n copies a range of elements to a new location. +copy_backward copies a range of elements in backward order. +move moves a range of elements to a new location. +move_backward moves a range of elements to a new location in backward location. +fill copy-assigns the given value to every element in a range. +fill_n copy-assigns the given value to N elements in a range. +transform applies a function to a range of elements, storing results in a destination range. +generate assigns the results of successive function calls to every element in a range . +generate_n assigns the results of successive function calls to N elements in a range. +remove }removes elements satisfying specific criteria. +remove_if +remove_copy }copies a range of elements omitting those that satisfy specific criteria. +remove_copy_if +replace }replaces all values satisfying specific criteria with another value. +replace_if +replace_copy }copies a range, replacing elements satisfying specific criteria with another value. +replace_copy_if +swap swaps the values of two objects. +swap_ranges swaps two ranges of elements. +iter_swap swaps the elements pointed to by two iterators. +reverse reverses the order of elements in a range. +reverse_copy creates a copy of a range that is reversed. +rotate rotates the order of elements in a range. +rotate_copy copies and rotate a range of elements. +shift_left }shifts elements in a range. +shift_right +shuffle }randomly re-orders elements in a range. +random_shuffle +sample selects n random elements from a sequence. +unique removes consecutive duplicate elements in a range. +unique_copy creates a copy of some range of elements that contains no consecutive duplicates. + +is_partitioned determines if the range is partitioned by the given predicate. +partition divides a range of elements into two groups. +partition_copy copies a range dividing the elements into two groups. +stable_partition divides elements into two groups while preserving their relative order. +partition_point locates the partition point of a partitioned range. + +is_sorted }checks whether a range is sorted into ascending order. +is_sorted_until +sort sorts a range into ascending order. +partial_sort sorts the first N elements of a range. +partial_sirt_copy copies and partially sorts a range of elements. +stable_sort sorts a range of elements while preserving order between equal elements. +nth_element partially sorts the given range, partitioned by the given element. + +lower_bound returns an iterator to the first element not less than the given value. +upper_bound returns an iterator to the first element greater than a certain value. +binary_search determines if an element exists in a certain range. +equal_range returns range of elements matching a specific key. + +merge merges two sorted ranges. +inplace_merge merges two ordered ranges in-place. + +includes returns true if one sequence is a subsequence of another . +set_differences computes the difference between two sets. +set_interactions computes the intersection of two sets. +set_symmetric_difference computes the symmetric difference between two sets. +set_union computes the union of two sets. + +is_heap checks if the given range is a max heap. +is_heap_until finds the largest subrange that is a max heap. +make_heap creates a max heap out of a range of elements. +push_heap adds an element to a max heap. +pop_heap removes the largest element from a max heap. +sort_heap turns a max heap into a range of elements sorted in ascending order. + +max returns the greater of the given values. +max_element returns the largest element in a range. +min returns the smaller of the given values. +min_element returns the smallest element in a range. +minmax returns the smaller and larger of two elements. +minmax_element returns the smallest and the largest elements in a range. +clamp clamps a value between a pair of boundary values. + +equal determines if two sets of elements are the same. +lexicographical_compare returns true if one range is lexicographically less than another. +lexicographical_compare_three_way compares two ranges using three-way comparison. + +is_permutation determines if a sequence is a permutation of another sequence. +next_permutation generates the next greater lexicographic permutation of a range of elements. +prev_permutation generates the next smaller lexicographic permutation of a range of elements. + +range::all of the above functions in algorithm + +8) + +abs +fabs }absolute value of a floating point value. +fabsf +fabsl + +fmod +fmodf }remainder of the floating point division operation. +fmodl + +remainder +remainderf }signed remainder of the division operation. +remainderl + +remquo +remquof }signed remainder as well as the three last bits of the division operation. +remquol + +fma +fmaf }fused multiply-add operation. +fmal + +fmax +fmaxf }larger of two floating point values. +fmaxl + +fmin +fminf }smaller of two floating point values. +fminl + +fdim +fdimf }positive difference of two floating point values. +fdiml + +nan +nanf }not-a-number (NaN). +nanl + +lerp linear interpolation function. + +exp expf expl returns e raised to the given power. +exp2 exp2f exp2l returns 2 raised to the given power. +expm1 expm1f expm1l returns e raised to the given power, minus one. +log logf logl computes natural (base e) logarithm. +log10 log10f log10l computes common (base 10) logarithm. +log2 log2f log2l base 2 logarithm of the given number. +log1p log1pf log1pl natural logarithm (to base e) of 1 plus the given number. +pow powf powl raises a number to the given power. +sqrt sqrtf sqrtl computes square root. +cbrt cbrtf cbrtl computes cubic root. +hypot hypotf hypotl computes square root of the sum of the squares of two or three given numbers. +sin sinf sinl computes sine. +cos cosf cosl computes cosine. +tan tanf tanl computes tangent. +asin asinf asinl computes arc sine. +acos acosf acosl computes arc cosine. +atan atanf atanl computes arc tangent. +sinh sinhf sinhl computes hyperbolic sine. +cosh coshf coshl computes hyperbolic cosine. +tanh tanhf tanhl computes hyperbolic tangent. +asinh asinhf asinhl computes the inverse hyperbolic sine. +acosh acochf acoshl computes the inverse hyperbolic cosine. +atanh atanhf atanhl computes the inverse hyperbolic tangent. +erf erff erfl error function. +erfc erfcf erfcl complementary error function. +tgamma tgammaf tgammal gamma function. +lgamma lgammaf lgammal natural logarithm of the gamma function. +ceil ceilf ceill nearest integer not less than the given value. +floor floorf floorl nearest integer not greater than the given value. +trunc truncf truncl nearest integer not greater in magnitude than the given value. +round roundf roundl +lround lroundf lroundl } nearest integer, rounding away from zero in halfway cases.. +llround llroundf llroundl +nearbyint nearbyintf nearbyintl nearest integer using current rounding mode. + +9) + +operator+ +operator- }applies unary operators to complex numbers. +opeartor* performs complex number arithmetics on two complex values or a complex and a scalar. +operator/ +operator== +operator!= }compares two complex numbers or a complex and a scalar. +operator>> +opeartor<< }serializes and deserializes a complex number. +real returns the real component. +imag returns the imaginary component. +abs returns the magnitude of a complex number. +arg returns the phase angle. +norm returns the squared magnitude. +conj returns the complex conjugate. +proj returns the projection onto the Riemann sphere. +polar constructs a complex number from magnitude and phase angle. +exp complex base e exponential. +log complex natural logarithm with the branch cuts along the negative real axis. +log10 complex common logarithm with the branch cuts along the negative real axis. +pow complex power, one or both arguments may be a complex number. +sqrt complex square root in the range of the right half-plane. +sin cos tan computes sine, cosine and tangent respectively of a complex number. +asin acos atan computes arc sine, arc cosine and arc tangent respectively of a complex number. +sinh cosh tanh computes hyperbolic sine, hyperbolic cosine and hyperbolic tangent respectively of a complex number. +asinh acosh atanh computes area hyperbolic sine, area hyperbolic cosine and area hyperbolic tangent respectively of a complex number. +operator""if +operator""i } A std::complex literal representing pure imaginary number. +operator""il + +