由於我給予理解,在一個成員函數的端部的常量說明符意味着該類的成員不能修改,在該函數內,除非它們被聲明爲可變的。 話雖如此,我有以下幾點:const成員函數可變
mns :: list :: list是我的鏈表實現,哪些函數不是const。
template<typename T> class HashTable{
private:
std::vector<mns::list::list<T> * > * hashtable;
long long int size;
public:
HashTable(int _size){
hashtable = new std::vector<mns::list::list<T> * >(_size, NULL);
size = _size;
}
....
bool insert(T _value) const {
long long int hash_value = getHash(_value);
if (hashtable->at(hash_value) == NULL) hashtable->at(hash_value) = new mns::list::list<T>(_value);
else if (hashtable->at(hash_value)->find_forward(_value) == -1) hashtable->at(hash_value)->push_top(_value);
}
....
}
和我在我的主要功能:
void testhash(){
HashTable<int> testhashtable1(100);
std::cout << testhashtable1.find(45) << std::endl;
testhashtable1.insert(45);
std::cout << testhashtable1.find(45) << std::endl;
}
鑑於哈希表::刀片是const函數我認爲我將無法修改私有成員哈希表。但testhash()打印:
這意味着被修改的構件是嗎? 所以我似乎錯過了這裏的東西......爲什麼私人會員矢量哈希表修改?
'長長int'是寫'很舊的方式intmax_t'或'ssize_t'。但是如果你想要一個大小,也許最好有一個無符號整數?像'uintmax_t'或'size_t'。並且可以具有[大小的方法]的矢量的大小(http://www.cplusplus.com/reference/vector/vector/size/) – Stargateur
@Stargateur'ssize_t'不是標準的一部分。 'size_t'是。 – 2016-11-17 15:27:50