Velocity Reviews > C++ > multidimensional vector to list

# multidimensional vector to list

haikoley@gmail.com
Guest
Posts: n/a

 06-01-2013
Hi there,

I'm trying to convert a three dimensional vector to a list.

I have a three dimenional vector of type float, which looks like this:

std::vector< TPoint3D<float> > points;
points.push_back(TPoint3D<float>(x,y,z);

And I thought about converting the vector to a list like this:
list<TPoint3D<float>> myList(points.begin(), points.end());

But I want to filter the values, so that if the z-values are greater than acertain threshold, they and the corresponding x and y values from the vector are removed. It works for vectors, because I can access the values usingtheir indices, but how do you do something like that with a list?

Cheers,
Haiko

SG
Guest
Posts: n/a

 06-02-2013
On Jun 2, 1:28*am, (E-Mail Removed) wrote:
>
> I'm trying to convert a three dimensional vector to a list.
>
> I have a three dimenional vector of type float, which looks like this:
>
> std::vector< TPoint3D<float> > points;
> points.push_back(TPoint3D<float>(x,y,z);

It does not look like a 3-dimensional vector to me.
More like a 1-dimensional vector of 3D points.

> And I thought about converting the vector to a list like this:
> list<TPoint3D<float>> myList(points.begin(), points.end());

Why? Seriously. Why?
It does not look like a good idea to me.

> But I want to filter the values, so that if the z-values are greater
> than a certain threshold, they and the corresponding x and y values
> from the vector are removed. It works for vectors, because I can
> access the values using their indices, but how do you do something
> like that with a list?

You don't need random access for processing a list from front to back.

- std::copy_if
- std::back_inserter
- Boost's filter_iterator
- std::list<>::remove_if