2016-03-03 56 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; 
    } 
}