Is this a valid used of STL vector::erase()



 DEVELOP > c-Plus-Plus > Is this a valid used of STL vector::erase()

LINK TO THIS PAGE  


rating :  0   |  0


  Page 1 of 1

1

 
Topic: DEVELOP > c-Plus-Plus
User: "kaede"
Date: 22 Nov 2003 11:16:45 PM
Object: Is this a valid used of STL vector::erase()
Hi all,
I recently came across the following code:
// some data
struct Data { // ... some data };
// a list to hold the data
vector<Data> dataList;
// a function to erase an element inside the datalist
void destroyDataAtIndex(int index)
{
dataList.erase( &dataList[index] ); //(a)
}
Is line (a) valid? If so, how does that work since the function
declaration of erase is erase(iterator iter)? Does it automatically
converts the address of the element to an iterator? or it makes the
assumption that an iterator is a typedef of pointer?
Also, I created a toy program with the above code snipplet, from the
test runs, some times the program will crashed. Is it because of the
way we used erase in (a)?
Thanks,
Kaede
.

User: "Thore Karlsen"

Title: Re: Is this a valid used of STL vector::erase() 22 Nov 2003 11:21:06 PM
On 22 Nov 2003 21:16:45 -0800,
(kaede) wrote:

Hi all,

I recently came across the following code:

// some data
struct Data { // ... some data };

// a list to hold the data
vector<Data> dataList;

// a function to erase an element inside the datalist
void destroyDataAtIndex(int index)
{
dataList.erase( &dataList[index] ); //(a)
}

Is line (a) valid? If so, how does that work since the function
declaration of erase is erase(iterator iter)? Does it automatically
converts the address of the element to an iterator? or it makes the
assumption that an iterator is a typedef of pointer?

No, it's not valid. However, it might work on some compilers that use
pointers as iterators for vectors. It will fail on others.
--
Be seeing you.
.


  Page 1 of 1

1

 


Related Articles
 

NEWER

pg.1232     pg.940     pg.716     pg.544     pg.412     pg.311     pg.234     pg.175     pg.130     pg.96     pg.70     pg.50     pg.35     pg.24     pg.16     pg.10     pg.6     pg.3     pg.1

OLDER