Fixing the Common Error: ISO C++ Forbids Declaration of Vector with No Type - A Comprehensive Guide


In this guide, we will discuss a common error that C++ developers often encounter, "ISO C++ forbids declaration of vector with no type." This error occurs when a developer tries to declare a vector without specifying its data type.

We will dive into the root causes of this error and provide step-by-step solutions on how to fix it. We will also cover an FAQ section that answers common questions developers have regarding this error.

## Table of Contents

- [Understanding the Error](#understanding-the-error)
- [Step-by-Step Solution](#step-by-step-solution)
- [FAQ](#faq)
- [Related Links](#related-links)

## Understanding the Error

The error "ISO C++ forbids declaration of vector with no type" typically occurs when a developer tries to declare a vector without specifying the data type of its elements. Vectors in C++ are part of the Standard Template Library (STL) and require an explicit data type to be specified during declaration. The error message is generated by the C++ compiler to enforce this requirement.

Here's an example of code that would trigger this error:

#include <vector>

int main() {
  vector my_vector; // This line will cause the error
  return 0;

In this example, the developer has not specified the data type for the elements of the my_vector vector, resulting in the error.

Step-by-Step Solution

To fix the "ISO C++ forbids declaration of vector with no type" error, follow these steps:

Identify the problematic vector declaration: Locate the line of code that is causing the error. This line should include the declaration of a vector without a specified data type.

Specify the data type: Add the data type for the elements of the vector by using angle brackets (< and >) after the vector keyword. For example, if you want to store integers in the vector, change the declaration to vector<int>.

Include the necessary header: Make sure that the <vector> header is included at the beginning of your source file to use the vector class.

Here's the corrected version of the example code:

#include <vector>

int main() {
  std::vector<int> my_vector; // The data type has been specified
  return 0;

By specifying the data type for the elements of the vector, the error should now be resolved.


Why do I need to specify a data type for a vector in C++?

Vectors in C++ are part of the STL, which uses template classes to provide generic functionality that can be used with different data types. When declaring a vector, you must specify the data type of its elements so that the compiler knows which template specialization to use.

What other containers in C++ require specifying a data type?

Other containers in the C++ STL that require specifying a data type include list, deque, set, map, unordered_set, and unordered_map.

Can I use custom data types with vectors?

Yes, you can use custom data types, such as classes or structs, with vectors. Just specify the custom data type when declaring the vector, like this: vector<MyCustomType>.

How can I specify multiple data types for a single vector?

To store elements of different data types in a single vector, you can use a tuple, pair, or a custom data type that encapsulates the different types. For example, you could declare a vector of pairs like this: vector<pair<int, string>>.

Can I create a vector of vectors?

Yes, you can create a vector of vectors by specifying a vector as the data type for the elements of another vector. For example, you can create a 2D vector of integers like this: vector<vector<int>>.


Great! You’ve successfully signed up.

Welcome back! You've successfully signed in.

You've successfully subscribed to

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.