首页 > 解决方案 > 如何验证指向标准向量内部数组的指针

问题描述

我想写入向量的内部数组。data()如果向量被初始化,我可以写。
但是,如果向量为空(但有足够的存储空间),我无法直接写入向量的内部数组。

#include <vector>
#include <iostream>

using namespace std;

void write_seq(int *v, size_t len)
{
    for (int i = 0; i < len; i++)
        v[i] = i;
}

int main(void)
{
    vector<int> v;
    cout << "reserve and write\n";
    v.reserve(10);
    write_seq(v.data(), v.capacity());
    cout << "seq length " << v.size() << "\n";
    return 0;
}

输出:

$ g++ main.cpp && ./a.out 
reserve and write
seq length 0

如何避免这种情况,是否可以验证data()向量的指针?

编辑:
我在这个问题上假设了两件事,一个空的vector v;

标签: c++stdvector

解决方案


您想使用resize、 不reservesize代替capacityreserve只是简单地给向量增加容量,而不实际增加大小。resize增加大小以匹配保留容量。


推荐阅读