Re: Append values to a vector?
Francogrex wrote:
On Apr 1, 11:56 am, Alan Johnson <aw...@yahoo.com> wrote:
I don't quite understand what you are looking for. What is a workspace?
Here is a version that accomplishes pretty much the same thing without
any explicit looping. Probably the whole generate_n nonsense is
overkill, but feel free to pick and choose the parts that apply to your
Hello, thanks for the code. By workspace I meant being able to reuse
the vector I created (called 'input') as a vector elsewhere in the
function (say in other subfunctions) as a vector. For example in S+
when I create a vector x= c(10,14,12,16,31) of 5 real numbers, then I
would be able to do vector manipulations on it such as x/2 would
equal= c(5, 7, 6, 8, 15.5)... But I don't know if C++ is essentially a
"vector friendly" language.
In C++ a "vector" is just a container of things of the same type that
are stored in contiguous memory. While the name is accurate, it is
misleading to people who expect to manipulate it like the "vector" in
other languages (especially math targeted languages).
You give a pretty good example of something that won't work for a
std::vector. That is:
std::vector<double> v2 = v1/2; // incorrect, won't work
You can apply C++ standard algorithms to vectors (or any container) to
achieve the same result. for_each and transform are popular. For
example, if you have a function f:
double f(double x) { return x/2.; }
You could apply that function to every member of a vector, storing the
results in another vector:
std::vector<double> v2;
std::transform(v1.begin(), v1.end,
std::back_inserter(v2), f);
Obviously this doesn't have the same elegance as "v1/2", as the C++
vector is more of a general purpose tool. You can combine it with other
tools (operator overloading, for example) to create what you are looking
for, and I'm sure there are C++ math libraries available that do just
that. Honestly, though, in the spirit of choosing the right tool for
the problem, I would choose Matlab/Maple/S+ if I needed to do that sort
of operation a lot.
--
Alan Johnson