std::vector error
Having the following code
struct Point
{
Point( int i = 0, int j = 0 ): x( i ), y( j ) {}
int x, y;
};
#define MAX_SIZE 10
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<Point> v;
v.reserve( MAX_SIZE );
for ( int i = 0; i < MAX_SIZE; ++i )
{
v.push_back( Point( i, i ) );
}
return 0;
}
I get the error
error C2446: ':' : no conversion from 'const
std::_Vector_iterator<_Ty,_Alloc>' to 'int'
with
[
_Ty=Point,
_Alloc=std::allocator<Point>
]
No user-defined-conversion operator available that can perform this
conversion, or the operator cannot be called
: while compiling class template member function
'std::_Vector_iterator<_Ty,_Alloc>
std::vector<_Ty>::insert(std::_Vector_iterator<_Ty,_Alloc>,const _Ty &)'
with
[
_Ty=Point,
_Alloc=std::allocator<Point>
]
The error occurs inside <vector> in this place
iterator insert(iterator _Where, const _Ty& _Val)
{ // insert _Val at _Where
size_type _Off = size() == 0 ? 0 : _Where - begin();
_Insert_n(_Where, (size_type)1, _Val);
return (begin() + _Off);
}
What is the matter?
Vladimir Grigoriev