Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c++ > #44873

Re: best way to remove std::vector member

From Ben Bacarisse <ben.usenet@bsb.me.uk>
Newsgroups comp.lang.c++
Subject Re: best way to remove std::vector member
Date 2016-09-05 21:11 +0100
Organization A noiseless patient Spider
Message-ID <87mvjmxg2y.fsf@bsb.me.uk> (permalink)
References <nqkf55$fu4$1@dont-email.me>

Show all headers | View raw


Lynn McGuire <lynnmcguire5@gmail.com> writes:

> What is the best way to loop and remove a member of a std::vector
> instance variable ?

The loop (possibly correctly) removes all the members of the vector that
are equal to the target.

> The current code is:
>
> std::vector <DataGroup *> owners; is an class instance variable.
>
> int DataItem::removeOwner (DataGroup * ownerDG)
> {
> 	int num = owners.size ();
>
> 	for (int i = 0; i < num; i++)
> 	{
> 		if (owners [i] == ownerDG)
> 		{
> 			owners.erase (owners.begin () + i);
> 			--num;
> 			--i;
> 		}
> 	}
> }

It looks like you want the erase-remove idiom:

  owners.erase(std::remove(owners.begin(), owners.end(), ownerDG),
               owners.end());

but you might really want to stop at the first (something your example
does not do).

-- 
Ben.

Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

best way to remove std::vector member Lynn McGuire <lynnmcguire5@gmail.com> - 2016-09-05 13:56 -0500
  Re: best way to remove std::vector member Paavo Helde <myfirstname@osa.pri.ee> - 2016-09-05 22:43 +0300
  Re: best way to remove std::vector member Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-09-05 21:11 +0100
  Re: best way to remove std::vector member Vir Campestris <vir.campestris@invalid.invalid> - 2016-09-05 21:28 +0100
    Re: best way to remove std::vector member Marcel Mueller <news.5.maazl@spamgourmet.org> - 2016-09-05 23:17 +0200
      Re: best way to remove std::vector member Vir Campestris <vir.campestris@invalid.invalid> - 2016-09-07 20:55 +0100
  Re: best way to remove std::vector member Juha Nieminen <nospam@thanks.invalid> - 2016-09-06 06:14 +0000
  Re: best way to remove std::vector member Luca Risolia <luca.risolia@linux-projects.org> - 2016-09-06 11:16 +0200
    Re: best way to remove std::vector member Öö Tiib <ootiib@hot.ee> - 2016-09-06 07:16 -0700
      Re: best way to remove std::vector member Luca Risolia <luca.risolia@linux-projects.org> - 2016-09-23 14:38 +0200
    Re: best way to remove std::vector member Lynn McGuire <lynnmcguire5@gmail.com> - 2016-09-06 12:30 -0500
      Re: best way to remove std::vector member Paavo Helde <myfirstname@osa.pri.ee> - 2016-09-06 21:32 +0300
  Re: best way to remove std::vector member mark <mark@invalid.invalid> - 2016-09-08 15:58 +0200
    Re: best way to remove std::vector member Lynn McGuire <lynnmcguire5@gmail.com> - 2016-09-08 12:45 -0500
      Re: best way to remove std::vector member mark <mark@invalid.invalid> - 2016-09-08 21:59 +0200
        Re: best way to remove std::vector member Lynn McGuire <lynnmcguire5@gmail.com> - 2016-09-08 15:25 -0500
        Re: best way to remove std::vector member Victor Bazarov <v.bazarov@comcast.invalid> - 2016-09-09 08:09 -0400
          Re: best way to remove std::vector member mark <mark@invalid.invalid> - 2016-09-09 17:06 +0200
            Re: best way to remove std::vector member Victor Bazarov <v.bazarov@comcast.invalid> - 2016-09-09 11:22 -0400
              Re: best way to remove std::vector member mark <mark@invalid.invalid> - 2016-09-09 20:33 +0200
                Re: best way to remove std::vector member Victor Bazarov <v.bazarov@comcast.invalid> - 2016-09-09 16:07 -0400
  Re: best way to remove std::vector member Kan <fcantoro@nospam.it> - 2016-09-12 18:26 +0200

csiph-web