Where are the headers of the C++ standard library

I wonder where on my file system I find the headers of the C++ Standard library. In particular I am looking for the definition of the vector template. I searched in /usr/include/ and various subdirectories. I also tried 'locate vector.h' which brought up many implementations of vectors, but not the standard one. What am I missing? (The distribution is Gentoo)

Background: I'm profiling a library that iterates over vector's most of the time and gprof shows that most of the time is spent in

std::vector<int, std::allocator<int> >::_M_insert_aux(
  __gnu_cxx::__normal_iterator<int*, std::vector<
      int, std::allocator<int> > >, int const&)

Probably this is what happens internally on a std::vector::push_back, but I'm not sure.

Answers


GCC typically has the standard C++ headers installed in /usr/include/c++/<version>/. You can run gcc -v to find out which version you have installed.

At least in my version, there is no vector.h; the public header is just vector (with no extension), and most of the implementation is in bits/stl_vector.h.

That's the case on my Ubuntu distribution; your distribution may differ.


Running g++ -v -v -v outputs lots of things, including all the include directories searched. vector is in one of those.


On my Debian Stable system vector is here:

/usr/include/c++/4.4/vector

On a "plain" ubuntu install you have to install

libstdc++-version-dev

to get the header files.

then cheking the installed files you'll get the path !


In many IDE (e.g. NetBeans) you may use Ctrl+Click to className to go to definition


Need Your Help

Cortex-M0+ only writes register with breakpoint

debugging atmel cortex-m atmelstudio

I have an application which only works when a breakpoint is set prior to writing to a register. The particular uC is an Atmel SAMC21 and the issue seems to be when writing to the GCLK peripheral. I...

Compare and Contrast NHibernate and OpenAccess from Telerik

c# .net nhibernate orm openaccess

Have you used the OpenAccess ORM from Telerik? How does it compare to NHibernate? When should I consider using it over NHibernate?