2013-07-19 118 views
2
struct info{ 
    int num; 
    int weight; 
}; 
vector<info> nbr; 

上述聲明是全球性的,我在我的功能一個循環,這個樣子結構C++向量,爲什麼我不能使用vector.at(i)或vector [i]結構?

for(int i=0;i<nbr.size();i++){ 
    info i = nbr.at(i); 
    vector<int> v; 
    v.push_back(i.weight); 
    tb[i.num] = v; 
} 

info i = nbr.at(i)給我的錯誤:呼叫沒有匹配功能'std::vector<info, std::allocator<info> >::at(info&)'

爲什麼呢?我做錯了什麼?

+6

當你的循環索引時,你應該避免將'i'重新定義爲'info'類型。 – 2013-07-19 00:48:16

+1

你不能用'info'索引一個向量。這是沒有道理的。 – chris

+0

你是對的,我重新定義了我,LOL – cakester

回答

4
for(int i=0;i<nbr.size();i++){ 
    info i = nbr.at(i); 

這就是爲什麼。 您正在重新定義i所指的內容。
這是你的循環索引int iinfo i,你的編譯器想知道你爲什麼要通過info&到​​。

更改名稱,你應該很好去。

相關問題