C++ 自定义数据结构:动态数组实现数据存储与查找
#include
struct CustomData { int id; double value; char name[20];
CustomData() {
id = 0;
value = 0.0;
memset(name, 0, sizeof(name));
}
};
class CustomDataStructure { private: CustomData* data; int size; int capacity;
public: CustomDataStructure() { data = nullptr; size = 0; capacity = 0; }
~CustomDataStructure() {
delete[] data;
}
void insertData(CustomData newData) {
if (size >= capacity) {
int newCapacity = (capacity == 0) ? 1 : capacity * 2;
CustomData* newDataArray = new CustomData[newCapacity];
memcpy(newDataArray, data, size * sizeof(CustomData));
delete[] data;
data = newDataArray;
capacity = newCapacity;
}
data[size++] = newData;
}
int findDataById(int searchId) {
for (int i = 0; i < size; i++) {
if (data[i].id == searchId) {
return i;
}
}
return -1;
}
void printBinaryStorage() {
unsigned char* byteData = reinterpret_cast<unsigned char*>(data);
for (int i = 0; i < size * sizeof(CustomData); i++) {
std::cout << std::hex << static_cast<int>(byteData[i]) << " ";
}
std::cout << std::endl;
}
};
int main() { CustomDataStructure structure; CustomData data1; data1.id = 1; data1.value = 3.14; strncpy(data1.name, "Data 1", sizeof(data1.name) - 1);
CustomData data2;
data2.id = 2;
data2.value = 2.718;
strncpy(data2.name, "Data 2", sizeof(data2.name) - 1);
structure.insertData(data1);
structure.insertData(data2);
structure.printBinaryStorage();
int index = structure.findDataById(1);
if (index != -1) {
std::cout << "Data found at index: " << index << std::endl;
} else {
std::cout << "Data not found" << std::endl;
}
return 0;
}
原文地址: https://www.cveoy.top/t/topic/pywo 著作权归作者所有。请勿转载和采集!