gpt4 book ai didi

c++ - vector 在 const data() 方法上引发错误

转载 作者:搜寻专家 更新时间:2023-10-31 00:54:05 25 4
gpt4 key购买 nike

我有以下代码:

#include <vector>

struct TestStruct {
std::vector<float> float_vect;
std::vector<bool> bool_vect;
};

void func(const TestStruct & test)
{
const float * p1 = test.float_vect.data(); //<--- this line works fine
const bool * p2 = test.bool_vect.data(); //<--- on this line error happens
}

int main()
{
TestStruct test;
func(test);
}

错误信息:

passing 'const std::vector' as 'this' argument of 'void std::vector::data() [with _Alloc = std::allocator]' discards qualifiers [-fpermissive]

std::vector

data() 方法指定了 const

为什么这个方法在 float vector 上工作正常,而在 boolean vector 上引发错误?

最佳答案

vector<bool>是一个好老的专业vector<T>它的实现方式可能不同于普通的 vector (例如,可以采用一些节省空间的优化)。这种设计的副作用是它并不总是表现得像普通的 vector (许多人认为 vector<bool> 因此被破坏)。

例如,在 http://en.cppreference.com/w/cpp/container/vector_bool 处的引用没有提到vector<bool>::data()根本。因此 - 在使用 vector 时不应使用它与类型 bool .事实上,您没有收到类似于 method not found 的错误是 - 在你的情况下 - 只是如何的问题 vector<bool>由您的编译器实现。

关于c++ - vector<bool> 在 const data() 方法上引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46487039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com