I am new to C++,here is my program
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <functional>
int main(){
static const double arr[] = {16.0,2.2,77.5,29.0,24.0};
std::vector<double> vec (arr, arr + sizeof(arr) / sizeof(arr[0]) );
std::transform(vec.begin(), vec.end(), vec.begin(),bind2nd(std::minus<double>(), 3.0));
for (auto i = vec.begin(); i != vec.end(); ++i)
std::cout << *i << ' ';
}
When I try to compile with g++ p1.cpp -o p1
p1.cpp: In function ‘int main()’:
p1.cpp:14:11: error: ‘i’ does not name a type
for (auto i = vec.begin(); i != vec.end(); ++i)
I know that there more ways to print the vector,but why is this not working?
To use the auto keyword, use it instead of a type to declare a variable, and specify an initialization expression. In addition, you can modify the auto keyword by using specifiers and declarators such as const , volatile , pointer ( * ), reference ( & ), and rvalue reference ( && ).
The "error does not name a type" in C/C++ is defined as the when user declares outside of the function or does not include it properly in the main file this error will through.
The auto keyword in C++ automatically detects and assigns a data type to the variable with which it is used. The compiler analyses the variable's data type by looking at its initialization. It is necessary to initialize the variable when declaring it using the auto keyword.
To resolve this error, a first method that is helpful would be declaring the function prototype before the main() method. So, we have used the function prototype before the main method in the updated code. When we have compiled the code, it throws no exceptions and runs properly.
You should try with -std=c++11
.
Works fine after that.
./p1
13 -0.8 74.5 26 21
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With