2
我有以下的結構存儲在矢量的後續位置添加元素的每個字節:字節矢量C++
struct StashVector {
int size; // Size of each space
int next; // Next empty space
// Dynamically allocated array of bytes:
std :: vector<char> storage;
// Functions!
void initialize(int sz);
//void cleanup();
int add(const void* element);
void* fetch(int index);
int count();
// void inflate(int increase);
};
及其實施:
void StashVector::initialize(int sz) {
size = sz;
next = 0;
}
int StashVector::add(const void* element) {
unsigned char* e = (unsigned char*)element;
for (int i = 0; i < size; i++)
storage.push_back(e[i]);
next++;
return(next-1); // Index number
}
void* StashVector::fetch(int index) {
assert(0 <= index);
if (index >= next)
return 0; // To indicate the end
// Produce pointer to desired element:
return &(storage.at(index*size));
}
int StashVector::count() {
return storage.size()/size;
}
我想用它在其中存儲整數像這樣:
int main() {
StashVector sv;
sv.initialize(sizeof(int));
for (int i = 0; i < 5; i++) {
sv.add(&i);
}
for (int j = 0; j<sv.count(); j++) {
cout << *(int*)sv.fetch(j) << endl;
}
}
這裏有一些我不明白。因爲它存儲上的不同位置的元素的字節在vector
,在頭四個位置時vector
(sv.fetch(0)
,sv.fetch(1)
,sv.fetch(2)
,sv.fetch(3)
)應00000000
00000000
00000000
00000000
,這相當於int
的二進制表示爲0
,但是當我嘗試在for
-loop中打印矢量元素時,它直接顯示數字。是因爲我用sizeof(int)
初始化它,它一次打印4個字節?