2016-03-03 23 views
-3
vector<vector<int>> v; 
vector<int> v0; 
for(int i = 0; i < 5; i++){ 
    v.push_back(v0); 
} 
for(int i = 0; i < v.size(); i++){ 
    cout << static_cast<void const *>(&(v[i])) << endl; 
} 

的地址,我嘗試把向量作爲對象和cout其地址如上,但失敗了,我那麼如何才能清點向量的地址。的static_cast無法施展矢量

+4

鏈接器錯誤消息不具有與您問題的標題任何關係。 –

+0

請給我們一個[MCVE]。 –

+1

@j_random_hacker那麼,有[過載(http://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt)見(7),它應該匹配靜態鑄造。 –

回答

2

而不是使用gcc的,你可能會想嘗試與

g++ -std=c++14 

編譯代碼那麼它應該工作:https://ideone.com/y0DwdA

鏈接器錯誤,我可以通過gcc繁殖,是最有可能涉及到的編譯器之間的差異描述here


正如@πάνταῥεῖ指出,編譯器標誌-std=c++11也能發揮作用。

+0

我看不到任何的'-std = C++ 14這裏'相關性? –

+0

@πάνταῥεῖ如果你插入空格愨''>>在第一線,在嵌套向量聲明的最後,有沒有。 – RHertel

+1

'-std == C++ 11'或沒有特定的標誌將解決這一已經,除非使用一個較舊的'cx03'編譯器。 –

1

編譯g++ -std=c++11 -Wall main.cc代碼:似乎

#include <iostream> 
#include <vector> 

int 
main() 
{ 
    using namespace std; 

    vector<vector<int>> v; 
    vector<int> v0; 
    for(int i = 0; i < 5; i++){ 
     v.push_back(v0); 
    } 
    for(size_t i = 0; i < v.size(); i++){ 
     cout << reinterpret_cast<size_t>(&(v[i])) << endl; 
    } 
}