2012-07-12 6 views
10

Tôi tự hỏi đâu trên hệ thống tệp của mình, tôi tìm thấy tiêu đề của thư viện C++ Standard. Đặc biệt tôi đang tìm kiếm định nghĩa của mẫu vector. Tôi đã tìm kiếm trong/usr/include/và các thư mục con khác nhau. Tôi cũng đã thử 'xác định vị trí vector.h', nó đã đưa ra nhiều triển khai vectơ, nhưng không phải là chuẩn. Tôi đang thiếu gì? (Sự phân bố là Gentoo)Đâu là tiêu đề của thư viện chuẩn C++

Bối cảnh: Tôi profiling một thư viện mà lặp trên vector của hầu hết thời gian và gprof cho thấy rằng phần lớn thời gian là chi tiêu trong

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

Có lẽ đây là những gì xảy ra trong nội bộ trên một std :: vector :: push_back, nhưng tôi không chắc chắn.

+2

Tại sao bạn tìm kiếm 'vector' trong *** C *** bao gồm? – genpfault

Trả lời

19

GCC thường có tiêu chuẩn C++ header được cài đặt trong /usr/include/c++/<version>/. Bạn có thể chạy gcc -v để tìm phiên bản bạn đã cài đặt.

Ít nhất trong phiên bản của tôi, không có vector.h; tiêu đề công khai chỉ là vector (không có phần mở rộng) và phần lớn việc triển khai là ở bits/stl_vector.h.

Đó là trường hợp trên bản phân phối Ubuntu của tôi; phân phối của bạn có thể khác nhau.

+1

Cảm ơn, thiếu .h ws gợi ý cần thiết. Trên Gentoo, nó nằm trong /usr/lib64/gcc/x86_64-pc-linux-gnu/4.5.3/include/g++-v4/vector – Thomas

0

Trong nhiều IDE (ví dụ như NetBeans), bạn có thể sử dụng Ctrl+Click để className để đi đến định nghĩa

1

Trên hệ thống ổn định Debian tôi vector là ở đây:

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

Có phải vector.h? Gói nào cung cấp? gcc? – Thomas

8

Chạy g++ -v -v -v xuất ra nhiều thứ, bao gồm tất cả các thư mục được tìm kiếm. vector là một trong số đó.

1

Trên ubuntu "đồng bằng" cài đặt bạn phải cài đặt

"libstdC++ (phiên bản) -dev"

để có được các tập tin tiêu đề.

sau đó cheking các tệp đã cài đặt, bạn sẽ nhận được đường dẫn!