2013-07-14 19 views
-4

/清晰矢量和陣列比方說,我有一個類,A我怎麼清空C++

Class A { 
    int x[100]; 
    vector<int> y; 
    Fill(x); 
    Fill(y.begin()); 
    B(x); 
    B(y.begin()); 
} 
Class Fill (pointer) { 
    *pointer = 0; 
    ++pointer; 
    *pointer = 1; 
    ++pointer 
} 
Class B(container) { 
    //how do I clear/empty the array and the vector passed by class A given only the pointers to them? 
    //I must clear an array and a vector in THIS class. 
    //I DO NOT want to fill them with 0s. 
    //x and y.begin are POINTERS to the first element of the container, not containers  
} 

dsfsdakfgnsdfgsf DG 自衛隊 陸上自衛隊 ghsdf 摹 sdfg ersg 小號

先謝謝你。

+1

你是什麼意思清除數組? –

+0

如果數組有[1,2,3,4],那麼我想讓它[]。 – Nayana

+0

呃..語法對於初學者來說並不真正有效。考慮解決這個問題。 – Rapptz

回答

1

對於矢量:

some_a_pointer->y.resize(0); 

你不能只是一個迭代器(y.begin())做到這一點。

數組的大小無法改變,所以你能做的最好的是0填充它。

1

std::vector有一個名爲clear方法,將清除所有的元素。

所以my_vector.clear();將清除一切。但是你不能真正爲數組做同樣的事情。這是不可能的。最好的情況是,你可以用零填充它們,或者錯誤地動態分配數組然後刪除它。我寧願不處理記憶問題,但我只是填充零。

對於編譯時間大小的靜態數組,C++ 11有一個名爲std::array<T,N>的類,它有一個名爲fill的方法,它可以使所有內容都變爲零(a循環)。您可以撥打電話my_array.fill(0);

+0

的問題是在B類,我只有指針到兩個陣列和載體。我顯然不能稱之爲「清晰的」上。指針 – Nayana

+0

@Nayana你想要做什麼是不可能的 – Rapptz

+0

@Nayana考慮你的方法,因爲糟糕的設計最好把分配/解除分配作爲主階級的責任,你應該實現這些功能在'類A' – billz