Quickly Learn The Basic Concepts Of Strings, Pair & Tuples In STL.
In this tutorial, we will gain basic knowledge of Strings, Pair, and Tuples in STL, before we actually jump to detailed and bigger concepts like Iterators, Algorithms, and Containers.
Although Strings are used in the same way as in general C++ language, it is worth discussing from the STL point of view. We can think of strings as a sequential container of characters. Also as we deal with template classes in STL, it is quite imperative that we know the concept of PAIR and TUPLE with respect to STL.
=> Check The In-Depth C++ Training Tutorials Here.
Table of Contents:
Strings In STL
Strings in STL support both ASCII as well as Unicode (wide-character) format.
STL supports two types of strings:
#1) string: This is the ASCII format string and to include this type of string objects in the program we need to include string.h file in our program.
#include <string>
#2) wstring: This is the wide-character string. In MFC programming, we call it a CString. To include wstring objects in our program we include the file xstring.
#include <xstring>
Whether ASCII or Unicode, strings in STL support various methods just in the way in which the other STL containers do.
Some of the methods supported by the string object are:
- begin() : Return iterator at the beginning.
- end() : Return iterator at the end.
- insert() : Insert into string.
- erase() : Erase characters from string.
- size() : Returns the length of string.
- empty() : Empty the contents of string.
Apart from these methods stated above, we have already covered string class methods in our earlier strings in C++ tutorials.
Let’s write a simple program to demonstrate STL strings.
#include <string> #include <iostream> using namespace std; int main() { string str1; str1.insert(str1.end(),'W'); str1.insert(str1.end(),'O'); str1.insert(str1.end(),'R'); str1.insert(str1.end(),'L'); str1.insert(str1.end(),'D'); for (string::const_iterator it = str1.begin(); it != str1.end(); ++it) { cout << *it; } int len = str1.size(); cout<<"\nLength of string:"<<len; cout << endl; return (0); }
Output:
WORLD
Length of string:5
In the above code, as we have seen, we declare a string object str1 and then using the insert method, we add characters one by one at the end of the string. Then using an iterator object, we display the string.
Next, we output the length of the string using the size method. This is a simple program to demonstrate the strings only.
PAIR In STL
PAIR class in STL comes handy while programming the associative containers. PAIR is a template class that groups together two value of either the same or different data types.
The general syntax is:
pair<T1, T2> pair1, pair2;
The above line of code creates two pairs i.e. pair1 and pair2. Both these pairs have the first object of type T1 and the second object of type T2.
T1 is the first member and T2 is the second member of pair1 and pair2.
Following are the methods that are supported by PAIR class:
- Operator (=): Assign values to a pair.
- swap: Swaps the contents of the pair.
- make_pair(): Create and returns a pair having objects defined by the parameter list.
- Operators( == , != , > , < , <= , >= ) : Compares two pairs lexicographically.
Let’s write a basic program that shows the usage of these functions in code.
#include <iostream> using namespace std; int main () { pair<int,int> pair1, pair3; pair<int,string> pair2; pair1 = make_pair(1, 2); pair2 = make_pair(1, "SoftwareTestingHelp"); pair3 = make_pair(2, 4); cout<< "\nPair1 First member: "<<pair1.first << endl; cout<< "\nPair2 Second member:"<<pair2.second << endl; if(pair1 == pair3) cout<< "Pairs are equal" << endl; else cout<< "Pairs are not equal" << endl; return 0; }
Output:
Pair1 First member: 1
Pair2 Second member: SoftwareTestingHelp
Pairs are not equal
In the above program, we create two pairs of type integer each and another pair of type integer and string. Next using the “make_pair” function we assign values to each pair.
Next, we compare pair1 and pair2 using the operator “==” to check if they are equal or not. This program demonstrates the basic working of the PAIR class.
Tuple In STL
Tuple concept is an extension of Pair. In pair, we can combine two heterogeneous objects, whereas in tuples we can combine three heterogeneous objects.
The general syntax of a tuple is:
tuple<T1, T2, T3>tuple1;
Just like pair, tuple also supports similar functions and some more additional functions.
These are listed below:
- Constructor: To construct a new tuple.
- Tuple_element: Returns the type of tuple element.
- make_tuple(): Creates and return a tuple having elements described by the parameter list.
- Operators( == , != , > , < , <= , >= ): Lexicographically compares two pairs.
- Operator(=): To assign value to a tuple.
- swap: To swap the value of two tuples.
- Tie: Tie values of a tuple to its references.
Let’s use some of these functions in a program to see their working.
#include <iostream> #include <tuple> using namespace std; int main () { tuple<int, int, int> tuple1; tuple<int, string, string> tuple2; tuple1 = make_tuple(1, 2,3); tuple2 = make_tuple(1,"Hello", "C++ Tuples"); int id; string str1, str2; tie(id, str1, str2) = tuple2; cout << id <<" "<< str1 <<" "<< str2; return 0; }
Output:
1 Hello C++ Tuples
In the above code to demonstrate tuples, we create two tuples. The first tuple tuple1 consists of three integer values. Second tuple i.e. tuple2 consists of one integer value and two string values.
Next, we assign values to both the tuples using “make_tuple” function. Then using “tie” function call, we tie or assign the values from tuple2 to id and two strings.
Finally, we output these values. The output shows the values from tuple2 we assigned to id and two strings.
Conclusion
Thus in this tutorial, we have briefly discussed strings, pair, and tuple used in STL. Whereas strings operations are similar to general C++, in addition, we can also operate iterators on these strings.
Pair and tuple constructs come handy while programming STL containers especially the associative containers.
In our upcoming tutorial, we will learn about algorithms and iterators in detail before we jump to the actual STL programming using STL.
=> Visit Here To See The C++ Training Series For All.