std::vector 的push_back不添加提供的值
std::vector's push_back does not add the supplied value
我有以下函数
std::vector<bool> buildBoolList(node* n)
{
std::vector<bool> boolList;
for(int i = 0; i < n->next.size(); i++)
{
int ival = atoi(n->next[i]->val.c_str());
bool b = !!ival;
boolList.push_back(b);
}
return boolList;
}
但是,每次运行代码时,返回的boolList总是大小为0。我运行了调试器以确保atoi返回一个有效的数字,我还确保b成为适当的布尔值,但我似乎不明白为什么没有填充boolList。
std::vector<bool>
是C++委员会的一种实验。它实际上是一个模板专用化,将bool值紧密地存储在内存中:每个值一位。
由于您不能引用一个位,因此您可能会看到大小为0。为什么矢量<bool>:引用没有';t返回对布尔的引用?
vector<bool>
没有错,只是它不等价于向量,因为t是等价于bool的整数类型。这只显示在性能(CPU一次只访问字节,其中在vector<bool>
中,每个元素都存储在一位中)和内存访问(对向量的第一个元素的引用与任何其他vector<T>
都不等价于数组。不幸的是,它是标准的一部分:请参阅第23.3.7节(C++0x FDIS)
我认为您的问题在于:
for(int i = 0; i < n->next.size(); i++)
{
int ival = atoi(n->next[i]->val.c_str());
我几乎可以肯定你的意思是:
for(node* i = n; i->next != NULL; i=i->next)
{
int ival = atoi(i->val.c_str());
相关文章:
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 有没有办法将字符串添加到 Vector 中,但前提是它尚不存在?->C++
- c++17在编译时将带有已删除复制构造函数的类添加到std::vector
- 如何非常快速地将数字添加到 Vector 中的一系列元素中
- 将map<pair<int,int>,vector<Object> >添加到BST中,其中对是关键
- 使用运算符重载添加存储在 vector 中的类对象
- 当我向 vector<int *> 添加元素时,我遇到了一些问题
- C++ std::vector 创建对象然后添加对象与在向量中创建对象之间的区别?
- C++ 如何在向量中添加向量?vector.push_back( 向量<> )?
- "Safe"将元素添加到 std::vector 的方法,超出了其 size() 但低于其容量 ()
- 如何将常量限定符添加到 vector<>::p ointer?
- 以重复的方式将元素添加到 std::vector
- 处理受向 std::vector 添加元素影响的引用
- 仅当其类型匹配时,如何在std :: vector上添加元素
- 何时删除添加到 std::vector 的元素
- 如何返回 boost::fusion::vector<x,y,z> 元素以添加到 std::array<boost::fusion::vector<x,y,z>>?
- 向 MFC 项目添加 #include 时的警告 C4995 <vector>
- 堆损坏试图将元素添加到现有的 std::vector
- 要创建一个一开始没有特定维度的类Vector,请在类中创建一个方法,允许向向量添加维度
- C ++多个CIN默认值(如果未输入),则添加到map<string,vector<double>>