【发布时间】:2014-12-04 22:15:57
【问题描述】:
我希望能够创建一个固定长度的容器 (vector?deque?) 来充当缓冲区,然后为另一个对象向量提供一个指向缓冲区位置的指针。允许写入。
示例(不可编译的代码)
class Item {
*p //pointer to a place in the vector
vector<int> values
}
vector<Item> items;
for(auto item : items) {
for(auto value : values) {
buffer[p] = item->value
++(item->p);
}
}
但是,我不确定如何使每个Item 清楚地确定应该从哪里开始写入缓冲区的关系。
我应该注意,对于items 的每次迭代,最终缓冲区都有一个已知的固定大小——但在函数调用之间,Items 的数量可能会发生变化。
谢谢,
【问题讨论】:
-
你的意思是像 std::array?
-
我不认为
std::array会起作用,因为对于我的项目的每次迭代,最终缓冲区大小都是已知的,但在函数调用之间items的大小可能会改变。我也不确定如何给每个Item一个指向它应该开始写入的位置的指针。 -
then use pointers to have items write to certain parts of the vector to create a buffer如果该向量被调整大小,您设置的那些指针最终可能指向垃圾,因为向量的迭代器可能会失效。 -
我仍然迷失在解析 question 中。 “...使用指针让项目写入向量的某些部分以创建缓冲区” - 写入向量不会“创建”任何东西。你有没有机会举一个实际的例子。 IE。 “假设我的向量看起来像......我希望能够做到......”。
-
指向
std::vector<>中包含的值的指针不稳定。这不是一个好主意!考虑使用索引,甚至 smart pointers,如果你真的需要的话。
标签: c++ pointers vector iterator