返回介绍

开始入门

操作指引

SDK

数据文档

常见问题

量化工具

其他

其他

结果数组类

发布于 2024-06-22 12:53:28 字数 3521 浏览 0 评论 0 收藏 0

类定义

DataArray 数组

DataArray 类模块是行情与交易数据查询的标准返回, 表示一个结构体数组。类声明如下:

template <typename T>
class DataArray
{
public:
	//获取api调用结果, 0: 成功, 非0: 错误码
	virtual int status() = 0;

	//返回结构数组的指针
	virtual T* data() = 0;

	//返回数据的长度
	virtual int count() = 0;

	//返回下标为i的结构引用,从0开始
	virtual T& at(int i) = 0;

	//释放数据集合
	virtual void release() = 0;
};

典型的使用场景如下:

1. 调用数据查询函数返回一个 DataArray<T>对象指针 DataArray<T> \*da;
2. 调用`da->status()` 判断函数调用是否成功,0 表示成功,非 0 表示错误码,调用失败,数组长度为 0
3. 如果`da->status()`返回成功,则可以遍历数组。
4. 调用`da->release()` 释放结果集。

使用举例


//查询一段tick行情
DataArray<Tick> *da = history_ticks("SHSE.600000", "2018-07-16 09:30:00", "2018-07-16 10:30:00");

if (da->status() == 0) //判断查询是否成功
{
	//遍历行情数组
	for (int i = 0; i < da->count(); i++)
	{
		cout << da->at(i).symbol << " " << da->at(i).price << endl;
	}
}

//释放数组
da->release();

另一种遍历方式


//查询一段tick行情
DataArray<Tick> *da = history_ticks("SHSE.600000", "2018-07-16 09:30:00", "2018-07-16 10:30:00");

if (da->status() == 0) //判断查询是否成功
{
	//获得原始数组指针
	Tick *ticks = da->data();

	//遍历行情数组
	for (int i = 0; i < da->count(); i++)
	{
		cout << ticks[i].symbol << " " << ticks[i].price << endl;
	}
}

//释放数组
da->release();


成员函数

status 获取函数调用结果

获得结果集之后, 第一步都应该先调用本成员函数判断查询数据是否成功。

函数原型:

int status()

参数:

参数名类型说明
返回值int0: 成功, 非 0: 错误码

注意:

1. 如果 status 断定为失败时, 不应该再遍历数组, 这时直接释放数组即可。

data 返回结构数组的指针

返回数组的原始指针, 可以用于遍历和拷贝数据。

函数原型:

T* data()

参数:

参数名类型说明
返回值结构指针具体取决于实例化类时的模板参数

注意:

1. 如果 status 断定为失败时, 不应该再遍历数组, 这时直接释放数组即可。

count 返回数组长度

指的是元素个数

函数原型:

int count()

参数:

参数名类型说明
返回值int数据元素个数

注意:

1. 如果 status 断定为失败时, 不应该再遍历数组, 这时直接释放数组即可。

at 返回元素值

返回下标为 i 的结构引用,从 0 开始

函数原型:

T& at(int i)

参数:

参数名类型说明
iint数组下标,从 0 开始
返回值T&返回数据元素的引用,具体取决于实例化类时的模板参数

注意:

1. 如果 status 断定为失败时, 不应该再遍历数组, 这时直接释放数组即可。

release 释放数组

获取 DataArray 指针之后,最后都应该释放(不管 status 是什么状态), 不然会造成内存泄露。调用 release 之后,不能再调用任何成员函数。

函数原型:

void release()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文