相关疑难解决方法(0)

如何获取原始数据的std :: vector指针?

我正在尝试std::vector用作char数组.

我的函数接受一个void指针:

void process_data(const void *data);
Run Code Online (Sandbox Code Playgroud)

在我刚刚使用此代码之前:

char something[] = "my data here";
process_data(something);
Run Code Online (Sandbox Code Playgroud)

哪个按预期工作.

但现在我需要动态性std::vector,所以我尝试了这个代码:

vector<char> something;
*cut*
process_data(something);
Run Code Online (Sandbox Code Playgroud)

问题是,如何将char矢量传递给我的函数,以便我可以访问矢量原始数据(无论是哪种格式 - 浮点数等)?

我试过这个:

process_data(&something);
Run Code Online (Sandbox Code Playgroud)

还有这个:

process_data(&something.begin());
Run Code Online (Sandbox Code Playgroud)

但是它返回了指向乱码数据的指针,后者发出了警告:warning C4238: nonstandard extension used : class rvalue used as lvalue.

c++ stl vector

150
推荐指数
3
解决办法
13万
查看次数

std :: vector元素是否保证是连续的?

我的问题很简单:std :: vector元素是否保证是连续的?在order word中,我可以使用指向std :: vector的第一个元素的指针作为C数组吗?

如果我的记忆力很好,那么C++标准就没有这样的保证.但是,如果元素不连续,那么std :: vector要求几乎不可能满足它们.

有人可以澄清一下吗?

例:

std::vector<int> values;
// ... fill up values

if( !values.empty() )
{
    int *array = &values[0];
    for( int i = 0; i < values.size(); ++i )
    {
        int v = array[i];
        // do something with 'v'
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ standards vector

104
推荐指数
4
解决办法
4万
查看次数

标签 统计

c++ ×2

vector ×2

standards ×1

stl ×1