C++ MCQs with Explanation (Standard Template Library) - Page 14

Standard Template Library

1. Majority of template classes and functions contained in STL were originally developed by

Explanation:

Correct answer: d) Alexander Stepanov and Meng Lee

The majority of template classes and functions contained in the C++ Standard Template Library (STL) were originally developed by Alexander Stepanov and Meng Lee. They designed the STL while working at HP Labs in the early 1990s.


2. To implement STL components in a program, we must include

Explanation:

Correct answer: d) <functional> header file

To implement STL components in a C++ program, you need to include the appropriate header files that provide the STL functionality. The <functional> header file is one of the essential headers in STL, as it contains various function objects (functors) and predefined function object templates, such as std::less, std::greater, std::plus, etc.


3. An STL container can be used to

Explanation:

Correct answer: d) None of the above

An STL container is a data structure that stores and organizes data in a specific way. While STL containers are used in C++ programs that use template classes, they are not used specifically for compiling such programs. Similarly, they can store objects of any data type, but this is not their primary purpose. The primary purpose of an STL container is to organize and manage data efficiently for specific use cases, and it is not meant for general-purpose data processing in memory.


4. Which one of the following is FALSE?

Explanation:

Correct answer: c) STL algorithms are member functions of containers

The statement in option c is false. STL algorithms are not member functions of containers. Instead, they are standalone functions designed to operate on containers. STL algorithms are used to perform various operations on container elements, such as searching, sorting, modifying, or analyzing the data stored in the containers. To use an STL algorithm, you pass the range of elements you want to process along with the algorithm function as arguments. In this way, algorithms can be used with different containers and are not tied to any specific container as member functions.


5. An STL algorithm is

Explanation:

Correct answer: c) a standalone function designed to operate on containers

The statement in option c is correct. An STL algorithm is a standalone function designed to operate on containers. It is not a friend function or a member function of a container class. STL algorithms are generic functions that can work with various container types as long as the containers provide the required interface (e.g., begin(), end() functions) to access their elements. Algorithms in STL follow the "Separation of Concerns" principle, where the algorithms are separate from the containers, making them more versatile and reusable across different containers.


6. Which one of the following is TRUE?

Explanation:

Correct answer: b) An iterator can always move forward or backward through a container

The statement in option b is true. An iterator is an object that allows you to traverse the elements of a container, and it provides operations to move forward or backward through the container. In most cases, an iterator can move both forward and backward, depending on the type of container it is associated with. For example, a bidirectional iterator can move both forward and backward through a container like a linked list or a deque. However, there are also more restricted types of iterators, such as forward iterators (e.g., for singly-linked lists), which can only move forward and do not support backward movement.


7. Which one of the following is a sequence container?

Explanation:

Correct answer: a) deque

The statement in option a is true. A deque (double-ended queue) is one of the sequence containers provided by the C++ Standard Template Library (STL). It is a dynamic array-like container that allows efficient insertions and deletions at both the front and back ends of the container. Deques are useful when you need to add or remove elements from the front and back frequently. Other examples of sequence containers include vector and list.


8. A vector container

Explanation:

Correct answer: b) allows insertions and deletions fast at the back

The statement in option b is true. A vector is one of the sequence containers provided by the C++ Standard Template Library (STL). It is implemented as a dynamic array, allowing efficient insertions and deletions at the back end of the container. Adding or removing elements at the back of a vector has constant time complexity (O(1)), making it suitable for scenarios where elements need to be added or removed from the end frequently. Additionally, vectors also permit direct access to elements using index-based access.


9. Which one of the following is a non-mutating algorithm?

Explanation:

Correct answer: c) for_each()

The statement in option c is true. The for_each() algorithm is a non-mutating algorithm provided by the C++ Standard Template Library (STL). Non-mutating algorithms do not modify the elements of the container they operate on; instead, they perform some operation on the elements without changing them. The for_each() algorithm applies a specified function to each element of the container but does not modify the elements. In contrast, mutating algorithms, such as unique() and partition(), modify the order or values of elements in the container during their operation.


10. Which of the following algorithms is used to replace an element with a specified value?

Explanation:

Correct answer: d) replace()

The statement in option d is true. The replace() algorithm is used to replace all occurrences of a specified value with a new value in the given container. When you call the replace() function, it scans the container and replaces all elements that match the old value with the new value. After the operation, the container will have the updated elements. For example, you can use the replace() algorithm to replace all occurrences of a certain number in a vector with another number.


11. In associative containers,

Explanation:

Correct answer: b) keys are used to access elements

The statement in option b is true. In associative containers, elements are stored in a way that allows efficient access using keys. Instead of using integer-based indices like in sequence containers (e.g., vector, deque), associative containers use keys to access elements. Each element in an associative container is associated with a unique key, and you can use the key to quickly locate and retrieve the element. Examples of associative containers include std::map, std::multimap, std::set, and std::multiset. These containers use different data structures (e.g., red-black trees, hash tables) to organize elements in a way that allows fast key-based access.


12. A list container

Explanation:

Correct answer: a) permits the use of bidirectional iterators

The statement in option a is true. A list is one of the container classes provided by the C++ Standard Template Library (STL), and it supports bidirectional iterators. A bidirectional iterator is an iterator that can move forward and backward through the container's elements. Lists are implemented as doubly-linked lists, where each element (node) points to both the next and previous elements. This linked structure allows efficient insertions and deletions at any position in the list, as well as backward traversal using bidirectional iterators. However, random access is not supported by lists, meaning that you cannot use index-based access (e.g., list[3]) to directly access elements in the list.


13. A map container

Explanation:

Correct answer: c) stores pairs of objects (or values)

The statement in option c is true. A map is one of the associative container classes provided by the C++ Standard Template Library (STL), and it stores pairs of objects (key-value pairs). Each element in the map is a pair that associates a unique key with a corresponding value. The keys are used to access and identify the values in the map. When you insert elements into a map, you provide both the key and the associated value, and the map organizes these pairs internally for efficient key-based access. Maps are useful when you need to maintain an ordered set of key-value pairs with fast access and efficient updates based on keys.


14. To use the function object modulus < int > ( ) in a program, we must include the header file

Explanation:

Correct answer: b) <functional>

The statement in option b is true. To use the function object modulus <int>() in a C++ program, you need to include the <functional> header file. The <functional> header file provides various function objects (functors) and function templates that allow you to perform various operations, such as comparisons, arithmetic operations, logical operations, etc., using objects as if they were functions. The modulus <int> function object is used to perform the modulo operation between two integers, and it is part of the <functional> header.


15. Consider the following code:

int main()
{
    vector<int> x;
    for (int i = 1; i < 4; i++)
        x.push_back(i);
    x.push_back(7.6);
    vector<int>::iterator p = x.begin();
    p = p + 1;
    x.insert(p, 5);
    x.erase(x.begin() + 3);
    return 0;
}

When executed, the vector will contain the elements

Explanation:

Correct answer: c) 1, 2, 5, 7

Let's analyze the code step by step:

  • The vector x is initially empty.
  • A for loop is used to push integers 1, 2, and 3 into the vector using push_back(). The vector will contain [1, 2, 3].
  • x.push_back(7.6) attempts to add the floating-point number 7.6 to the vector. However, the vector is of type vector<int>, and it cannot store floating-point numbers directly. The number 7 will be added to the vector, and it will now contain [1, 2, 3, 7].
  • vector<int>::iterator p = x.begin(); creates an iterator p that points to the first element of the vector (1).
  • p = p + 1; increments the iterator p, so it now points to the second element (2) of the vector.
  • x.insert(p, 5); inserts the value 5 at the position pointed by the iterator p, which is the second position in the vector. The vector will now contain [1, 5, 2, 3, 7].
  • x.erase(x.begin() + 3); erases the element at the fourth position (index 3) of the vector. After this operation, the vector will contain [1, 5, 2, 7].
Therefore, the correct answer is option c) 1, 2, 5, 7.



Your Score is 10

THE STUDENT FRIENDLY BOOK TO LEARN C++. 
Let us C++ by Famous author Yashavant Kanetkar
Indian writer


Topic wise C++ MCQs Index ≡
Click on particular topic to visit that page
  1. Principles of Object-Oriented Programming 
  2. Beginning with C++
  3. Tokens, Expressions, and Control Structures
  4. Functions in C++
  5. Classes and Objects
  6. Constructors and Destructors
  7. Operator Overloading
  8. Inheritance
  9. Pointers, Virtual Functions, and Polymorphism
  10. Managing Console I/O Operations
  11. Working with Files
  12. Templates
  13. Exception Handling
  14. Standard Template Library
  15. Manipulating Strings
  16. New Features in ANSI C++ Standards
  17. Object-Oriented System Development

Comments