尝试通过将包含char缓冲区的结构存储到向量中来最小化OCCI数组获取的行数,代码如下:
1.5s
现在由于某种原因,这不起作用。但是,如果不是使用col.buffer,我创建一个char缓冲区[1000] [300]并将其放入setDataBuffer然后在cout部分中执行: cout<< buffer [j]<< ENDL;
效果很好。所以我不确定我搞砸了哪里?
char缓冲区与col.buffer完全相同,不是吗?
我认为这不重要,但结构列在头文件中定义。
答案 0 :(得分:1)
我想setDataBuffer
填充你传递的缓冲区作为参数(这里是col.buffer),然后你将它推入向量,所以struct Columns
分配了一个新的vec
并复制col
内容。现在col
和vec[0]
是两个不同的对象。
然后你调用一些方法来填充你第一次传递给它的缓冲区。所以它填充col.buffer
,你读vec[0].buffer
,它们是不同的,因为它们是两个不同的对象。
一种解决方案是vec.emplace_back();
创建一个实例,然后将vec[0].buffer
传递给setDataBuffer
。但要小心矢量中的元素地址。如果修改了向量(添加或删除元素),它可以重新分配它的内容,并且元素地址可能会改变。