Re: a question about STL
On Apr 14, 12:51 am, JDT <jdt_yo...@yahoo.com> wrote:
James Kanze wrote:
On Apr 13, 10:13 pm, JDT <jdt_yo...@yahoo.com> wrote:
I am curious if there is a way to just use existing STL functions,
algorithms etc to accomplish the following loop (without a need to write
my own function). I know how to use some STL functions plus my own
function to replace the loop. But that unnecessarily makes code more
complicated. Any advice is much welcome. Thanks.
int nSize;
...
vector<int> v;
v.resize(nSize);
for (int i=0; i<nSize; i++)
v[i] = i;
You need a special iterator; check out boost::iterators. With
the correct iterator, it's just:
vector<int> v( boost::counting_iterator< int >( 0 ),
boost::counting_iterator< int >( nSize ) ) ;
Do you think MS Visual Studio 2005 supports boost?
Officially, or? It's not included as part of the product, as
far as I know. On the other hand, I'm pretty sure that Boost
supports recent (and even not so recent) VC++.
I copied an example
from the Internet but the compiling process failed. For example, the
compiler complained the following file is not found. Your further help
is appreciated.
Boost uses a somewhat exotic build process, and I'm not familar
with it. However:
-- A large number of the components (including, I suspect,
iterator) are 100% templates, and don't need to be compiled.
Just copy the necessary headers into a Boost directory, and
tell the compiler to look for them there.
-- Some of the components which do require compiling (e.g.
regular expressions, which you'll definitly want as well)
have support for compiling outside of the Boost build
process. You might also want to try that.
Whatever process you use, of course, you'll have to tell the
compiler where to look for the headers and the libraries. For
VC++, it's /I option for the headers, and you specify each
library explicitly, by name. (If you're using bash or ksh, you
can do something like "$BOOSTLIBDIR/*.lib", if you want them
all. Unlike most compilers, the order of libraries is not
significant for VC++.)
#include "boost"
I don't think that there is such a header. Something like:
#include "boost/iterator.hpp"
would be more likely, I think.
--
James Kanze (Gabi Software) email: james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34