Re: std::vector : begin, end and insert - Using Objects instead of ints
Something is giving me problems.
std::vector<CPoint> m_Pts;
CPoint Pt(2, 4);
//---------------------------------------------------------------------------------
// Fill Collection
//---------------------------------------------------------------------------------
for (UINT i = 1; i < 11; i++)
{
CPoint Pt;
Pt.x = i;
Pt.y = i;
m_Pts.push_back(Pt);
}
//---------------------------------------------------------------------------------
// at : Returns a reference to the element at a specified location in the
vector.
//---------------------------------------------------------------------------------
for (UINT i = 0; i < 10; i++)
{
CPoint& rPt = m_Pts.at(i);
TRACE("Pt[%d] Pt.x %d, Pt.y %d\n", i, rPt.x, rPt.y);
}
//---------------------------------------------------------------------------------
// begin : A random-access iterator addressing the first element in the
vector or
// to the location succeeding an empty vector. You should always compare
// the value returned with vector::end to ensure it is valid.
//
// end : A random-access iterator to the end of the vector object. You
should
// compare the value returned to vector::begin to ensure it is valid.
//
//---------------------------------------------------------------------------------
m_Pts.resize(20);
std::vector<CPoint>::const_iterator m_cIter;
// *c1_cIter = 200; Error. c1_cIter is constant.
m_cIter = m_Pts.begin();
TRACE("Position of Iterator: %d\n", *m_cIter);
std::vector<CPoint>::iterator m_Iter;
m_Iter = m_Pts.begin();
TRACE("Position of Iterator: %d\n", *m_Iter);
m_Iter = m_Pts.end();
TRACE("Position of Iterator: %d\n", *m_Iter);
*m_Iter = 10;
TRACE("Position of Iterator: %d\n", *m_Iter);
for (UINT i = 0; i < m_Pts.size(); i++)
{
CPoint& rPt = m_Pts.at(i);
TRACE("Pt[%d] Pt.x %d, Pt.y %d\n", i, rPt.x, rPt.y);
}
for(m_Iter = m_Pts.begin(); m_Iter < m_Pts.end(); m_Iter++)
{
CPoint& pt = m_Pts.at(*m_Iter);
TRACE("Pt[%d] Pt.x %d, Pt.y %d\n", pt.x, pt.y);
}