Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8543955
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 11, 20262026-06-11T12:26:04+00:00 2026-06-11T12:26:04+00:00

I have a pointer p (not an iterator) to an item in a list.

  • 0

I have a pointer p (not an iterator) to an item in a list. Can I then use p to delete (erase) the item from the list? Something like:

mylist.erase(p);

So far I have only been able to do this by iterating through the list until I reach an item at the location p, and then using the erase method, which seems very inefficient.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-11T12:26:05+00:00Added an answer on June 11, 2026 at 12:26 pm

    A std::list is not associative so there’s no way you can use a pointer as a key to simply delete a specific element directly.

    The fact that you find yourself in this situation points rather to questionable design since you’re correct that the only way to remove the item from the collection as it stands is by iterating over it completely (i.e. linear complexity)

    The following may be worth considering:

    1. If possible, you could change the list to a std::multiset (assuming there are duplicate items) which will make direct access more efficient.

    2. If the design allows, change the item that you’re pointing to to incorporate a ‘deleted’ flag (or use a template to provide this) allowing you to avoid deleting the object from the collection but quickly mark it as deleted. Drawback is that all your software will have to change to accommodate this convention.

    3. If this is the only bit of linear searching and the collection is not big (<20 items say.) For the sake of expediency, just do the linear search as you’ve suggested but leave a big comment in the code indicating how you “completely get” how inefficient this is. You may find that this does not become a tangible issue in any case for a while, if ever.

    I’m guessing that 3 is probably your best option. 🙂

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a program which is like this list<int>:: iterator n = alist.begin(); while(n!=
I have a pointer to a map that I am trying to delete (this
I have a pointer which points to a function. I would like to: if
I have a vector<list<customClass> > I have an iterator vector<list<customClass> >::const_iterator x When I
I have something like: #include MyImage.hpp // MyImage wraps the Qt library image class
list<string> mylist; mylist.push_back(random stuff); list<string>::iterator it; it=mylist.begin(); string mystr; //and this doesn't work: mystr=*it;
Does anyone have any pointers to good resources concerning mesh networks? Maybe I'm not
Hi I have some experience with programming but I'm not very good with pointers.
I have a pointer to integer array of 10. What should dereferencing this pointer
I have a pointer to a UIView . How do I access its UIViewController

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.