Lesson 2
Basic Vector Operations in C++
Lesson Overview

Welcome to our practice-focused lesson on Basic Vector Operations without Built-in Methods. A vector in C++ is simply an ordered collection of items that can be of any type.

Working with vectors is a fundamental aspect of C++ programming. While C++ indeed offers numerous standard library functions to make operations with vectors quite straightforward, understanding how to perform these operations without using standard library functions can dramatically sharpen your problem-solving skills, improve your knowledge of how data structures work under the hood, and prepare you for programming environments that may not provide such high-level abstractions.

Vector Data Structure Review

The vector data structure in C++ is a dynamic array that provides flexible storage and manipulation capabilities for collections of items. It is implemented as a class in the C++ Standard Library (std::vector), offering a range of methods and functionalities to manage and interact with elements. Unlike static arrays, std::vector allows its size to dynamically grow and shrink as needed, managing memory allocation and deallocation automatically.

For the purpose of this lesson and practice exercises, you'll need to understand that a vector is essentially a dynamic array, where elements can be accessed and modified via zero-based indexing. Each element in a vector can be individually accessed, modified, and traversed, making it a versatile data structure for many programming tasks.

Basic operations for manipulating vectors manually include:

  • Accessing elements by index
  • Iterating through the vector
  • Inserting and removing elements
  • Resizing the vector
  • Using .size() to get the length of the vector

Additionally, you should be familiar with the concept of immutability where passing vectors by constant reference (const std::vector<int>&) ensures the original vector is not modified and avoids unnecessary copying of data.

Quick Example

Consider a function that finds the maximum element in a vector without using C++'s built-in algorithms like std::max_element.

Our approach to the findMax challenge is:

  1. Initialize Maximum Element: Begin by initializing a variable max_element with the first element of the input vector vec. This will serve as the current largest element found in the vector.

  2. Set Up a Loop: Utilize a range-based for loop to iterate through each element in the vector vec.

  3. Compare Elements: Within the loop, compare the current element to the max_element.

  4. Update Maximum Element: If the current element is greater than max_element, update max_element to this current element.

  5. Return the Maximum Element: Once the loop completes, return the max_element which now holds the largest element found in the vector.

Here is how the solution will look:

C++
1// Find the maximum element in a vector without using std::max_element 2 3#include <iostream> 4#include <vector> 5 6int findMax(const std::vector<int>& vec) { 7 int max_element = vec[0]; // Initialize with the first element 8 for (int element : vec) { 9 if (element > max_element) { 10 max_element = element; 11 } 12 } 13 return max_element; 14} 15 16// Example usage 17int main() { 18 std::vector<int> sample_vector = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5}; 19 std::cout << findMax(sample_vector) << std::endl; // Output: 9 20 return 0; 21}
Up Next: Practice!

We encourage you to fully grasp this concept, as it's a building block for many complex algorithms. In the practice section, we will dive into tasks that require this and other basic vector manipulation operations. Our goal is not only to teach you specific algorithms but, more importantly, to build a solid understanding of how simple code can solve complex problems. Let's get started!

Enjoy this lesson? Now it's time to practice with Cosmo!
Practice is how you turn knowledge into actual skills.