2010-06-25 187 views
1

我很確定這與void函數指針的向量有關,但我無法真正做出任何事情。需要幫助解密gprof輸出

有人可以爲我分解這件事嗎?

__gnu_cxx::__normal_iterator<unsigned long long const*, std::vector<unsigned long long, std::allocator<unsigned long long> > >::difference_type __gnu_cxx::operator-<unsigned long long const*, unsigned long long const*, std::vector<unsigned long long, std::allocator<unsigned long long> ...> >(__gnu_cxx::__normal_iterator<unsigned long long const*, std::vector<unsigned long long, std::allocator<unsigned long long> > > const&, __gnu_cxx::__normal_iterator<unsigned long long const*, std::vector<unsigned long long, std::allocator<unsigned long long> > > const&) 

回答

2

如果我是正確的,這可以大致翻譯爲:

// Typedef for brevity 
typedef vector<unsigned long long>::iterator uv_iter; 
// Actual function 
uv_iter::difference_type operator-(const uv_iter &, const uv_iter &); 

所以,很可能是指的是計算一個向量的兩個迭代器之間的差值(=距離)的功能。無論如何,當優化器在這樣的功能上實際上應該被轉換成簡單的內聯指針比較。

2

它似乎與減去兩個std::vector<unsigned long long>::iterator s有關。

2

這是減法運算符(operator-),用於將兩個迭代器的差異轉換爲unsigned long long s的向量。在普通的C++,沒有所有的分配器和額外的模板參數,該函數簽名是這樣的:

std::vector<unsigned long long>::iterator::difference_type operator- 
    (const std::vector<unsigned long long>::iterator& first, 
    const std::vector<unsigned long long>::iterator& second); 

哪裏std::vector<unsigned long long>::iterator::difference_type通常一樣ptrdiff_t