Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

C++ Tutorial

C++ HOME C++ Intro C++ Get Started C++ Syntax C++ Output C++ Comments C++ Variables C++ User Input C++ Data Types C++ Operators C++ Strings C++ Math C++ Booleans C++ If...Else C++ Switch C++ While Loop C++ For Loop C++ Break/Continue C++ Arrays C++ Structures C++ Enums C++ References C++ Pointers

C++ Functions

C++ Functions C++ Function Parameters C++ Function Overloading C++ Scope C++ Recursion

C++ Classes

C++ OOP C++ Classes/Objects C++ Class Methods C++ Constructors C++ Access Specifiers C++ Encapsulation C++ Inheritance C++ Polymorphism C++ Files C++ Exceptions C++ Date

C++ Data Structures

C++ Data Structures & STL C++ Vectors C++ List C++ Stacks C++ Queues C++ Deque C++ Sets C++ Maps C++ Iterators C++ Algorithms

C++ How To

C++ Add Two Numbers C++ Random Numbers

C++ Reference

C++ Reference C++ Keywords C++ <iostream> C++ <fstream> C++ <cmath> C++ <string> C++ <cstring> C++ <ctime> C++ <vector> C++ <algorithm>

C++ Examples

C++ Examples C++ Real-Life Examples C++ Compiler C++ Exercises C++ Quiz C++ Syllabus C++ Certificate


C++ Vectors


C++ Vector

A vector in C++ is like a resizable array.

Both vectors and arrays are data structures used to store multiple elements of the same data type.

The difference between an array and a vector, is that the size of an array cannot be modified (you cannot add or remove elements from an array). A vector however, can grow or shrink in size as needed.

To use a vector, you have to include the <vector> header file:

// Include the vector library
#include <vector>

Create a Vector

To create a vector, use the vector keyword, and specify the type of values it should store within angle brackets <> and then the name of the vector, like: vector<type> vectorName.

Example

// Create a vector called cars that will store strings
vector<string> cars;

If you want to add elements at the time of declaration, place them in a comma-separated list, inside curly braces {}, just like with arrays:

Example

// Create a vector called cars that will store strings
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// Print vector elements
for (string car : cars) {
  cout << car << "\n";
}
Try it Yourself »

Note: The type of the vector (string in our example) cannot be changed after its been declared.


Access a Vector

You can access a vector element by referring to the index number inside square brackets [].

Vectors, like arrays, are 0-indexed, meaning that [0] is the first element, [1] is the second element, and so on:

Example

// Create a vector called cars that will store strings
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// Get the first element
cout << cars[0];  // Outputs Volvo

// Get the second element
cout << cars[1];  // Outputs BMW
Try it Yourself »

One advantage of using the vector library, is that it includes many useful functions. For example, you can access the first or the last element of a vector with the .front() and .back() functions:

Example

// Create a vector called cars that will store strings
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// Get the first element
cout << cars.front();

// Get the last element
cout << cars.back();
Try it Yourself »

To access an element at a specified index, you can use the .at() function and specify the index number:

Example

// Create a vector called cars that will store strings
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// Get the second element
cout << cars.at(1);

// Get the third element
cout << cars.at(2);
Try it Yourself »

Note: The .at() function is often preferred over square brackets [] because it lets you know if an error occurs.

For example if the element is out of range:

Example

// Create a vector called cars that will store strings
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// Try to access an element that does not exist (throws an error message)
cout << cars.at(6);
Try it Yourself »


Change a Vector Element

To change the value of a specific element, you can refer to the index number:

Example

vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// Change the value of the first element
cars[0] = "Opel";

cout << cars[0];  // Now outputs Opel instead of Volvo
Try it Yourself »

However, it is safer to use the .at() function:

Example

vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// Change the value of the first element
cars.at(0) = "Opel";

cout << cars.at(0);  // Now outputs Opel instead of Volvo
Try it Yourself »

Add Vector Elements

The biggest difference between a vector and an array is that vectors can grow dynamically. That means you can add or remove elements from the vector.

To add an element to the vector, you can use the .push_back() function, which will add an element at the end of the vector:

Example

vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cars.push_back("Tesla");
Try it Yourself »

You can add as many elements as you want:

Example

vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cars.push_back("Tesla");
cars.push_back("VW");
cars.push_back("Mitsubishi");
cars.push_back("Mini");
Try it Yourself »

Remove Vector Elements

To remove an element from the vector, you can use the .pop_back() function, which removes an element from the end of the vector:

Example

vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cars.pop_back();
Try it Yourself »

Note: Elements are usually only added and removed from the end of the vector. If you need to add or remove elements from both ends, it is often better to use a deque instead of a vector.


Vector Size

To find out how many elements a vector has, use the .size() function:

Example

vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cout << cars.size();  // Outputs 4
Try it Yourself »

Check if a Vector is Empty

There is also a function to find out whether a vector is empty or not.

The .empty() function returns 1 (true) if the vector is empty and 0 (false) if it contains one or more elements:

Example

vector<string> cars;
cout << cars.empty();  // Outputs 1 (The vector is empty)
Try it Yourself »

Example

vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cout << cars.empty();  // Outputs 0 (not empty)
Try it Yourself »

Loop Through a Vector

You can loop through the vector elements by using a for loop combined with the .size() function:

Example

vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

for (int i = 0; i < cars.size(); i++) {
  cout << cars[i] << "\n";
}
Try it Yourself »

You can also use a for-each loop (introduced in C++ version 11 (2011), which is cleaner and more readable:

Example

vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

for (string car : cars) {
  cout << car << "\n";
}
Try it Yourself »

Tip: It is also possible to loop through vectors with an iterator, which you will learn more about in a later chapter.




Complete Vector Reference

For a complete reference of Vector functions, go to our C++ Vector Reference.



×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
sales@w3schools.com

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
help@w3schools.com

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.