在C++中构建数据库的原型
building prototype of a database in C++
我正在尝试构建一个小型数据库的原型。首先将一些整数作为数据,并将它们的条件作为访问与否。条件最初是在迭代数据集时设置的。稍后我将更改一些条件(不在代码中)。
稍后使用名为"isVisited"的函数检查条件,代码如下 -
main.cpp
--------
#include <iostream>
#include <list>
#include "Data.h"
using namespace std;
int main ()
{
list<Data>* test = new list<Data>();
test->push_back(12);
test->push_back(13);
test->push_back(14);
for (list<Data>:: iterator it = test->begin(); it != test->end(); it++){
it->visited_data = false;
}
return 0;
}
Data.h
------
#ifndef DATA_H
#define DATA_H
class Data
{
public:
Data();
void isVisited(Data* data_);
bool visited_data;
};
#endif
Data.cpp
--------
#include <iostream>
#include <list>
#include "Data.h"
using namespace std;
Data::Data()
{
}
void Data::isVisited(Data* data_)
{
Data* _data = data_;
if (_data->isVisited){
cout<<"this data is visited"<<endl;
}
else
cout<<"this data is not visited"<<endl;
}
您有一个容器,它期待Data
,但您int
提供它。 您需要某种类型的转换运算符。 最简单的方法是为Data
提供一个隐式构造函数,这需要int
。
class Data
{
public:
Data(int)
{
// this should do something "appropriate"
}
};
但是,从您到目前为止发布的代码来看,您期望如何处理您传递给数据集(test
)的整数并不完全清楚,因为目前您没有存储数据集中保存的值,只有一个标志来指示它是否已被访问。
附带说明一下,std::list
很少是最合适的数据结构,特别是如果您计划仅通过push_back()
与它进行交互,就像您的示例中一样。 对于这种情况,首选std::vector
.
另一方面,您的test
对象正在泄漏。 无论如何,没有正当理由动态分配它,因此我将向您展示一些替代方案。
最首选的方法是创建具有自动存储持续时间的它,如下所示:
std::vector<Data> test;
test.push_back(12);
// ...
如果你觉得必须动态分配它,你应该把它包装在一个智能指针中。
std::unique_ptr<std::vector<Data>> test(new std::vector<Data>);
test->push_back(12);
// ...
相关文章:
- 函数向量_指针有不同的原型,我可以构建一个吗
- 查询SQLite数据库中的日期
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何在ArangoDb AQL查询中指定数据库
- 从数据库实时显示QT c++中的数据
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 功能原型的目的
- getline() 的原型/库是什么;
- 无法在C++中建立与MySQL数据库的连接
- 将类实现到数据库程序中
- 连接 dockerized 模型和 dockerized 数据库时出现"无法 SQLConnect"错误
- 具有enable_if外部类原型的模板类构造函数定义
- 函数如何通知用户它基于函数原型抛出异常?
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 在C++中包含原型文件的正确方法是什么?
- 调试编译的服务器在数据库打开时崩溃
- 在函数中拥有函数原型的目的是什么?
- C++变量mysql_query到数据库
- 在C++中构建数据库的原型
- 几个使用相同原型的共享对象导致错误:数据库中已经存在文件