检查向量项是否为空
Check if vector item not null C++
我有结构:
struct node
{
bool data;
node* l;
node* r;
node(bool data_) : data(data_), l(0), r(0) {}
};
像这样的循环
void printNode(std::vector<node*> nodes, int level, int max_level)
{
for (int i = 0; i < nodes.size(); i++) {
node * itr = nodes.at(i);
if (itr->data != 2) {
cout << itr->data;
newNodes.push_back(itr->l);
newNodes.push_back(itr->r);
} else {
newNodes.push_back(new node(2));
newNodes.push_back(new node(2));
cout << " ";
}
printWhitespaces(betweenSpaces);
}
}
有时itr->l(或r)为null,而不是init struct。
像这样?它将跳过您的NULL
元素,以及vector
中r
成员的NULL
值元素,并继续for
循环。
node * itr = nodes.at(i);
if(!itr || !itr->r) continue;
要检查指针是否为空,只需使用:
itr->l == 0
如果为0,则为空。但是考虑使用智能指针,它们更安全。
你也应该考虑用标准的方法遍历你的向量,使用如下:
std::vectoc<node*>::iterator
it = nodes.begin(),
ite = nodes.end();
for(; it != ite; ++it) {
...
}
最后你应该像这样通过引用传递你的向量:
void printNode(std::vector<node*>& nodes, int level, int max_level)
相关文章:
- 我在二维向量中是否正确分配了内存
- 检查向量是否具有所有可能的字符组合
- 如何检查两个 std::向量在小于 O(n) 的时间复杂度内是否相等
- 如何检查类实例向量的索引是否为空
- 这种方式是否可以接受向向量添加unique_ptr?
- 向量是否存在行主要形式?
- 将相同共享指针的副本存储在不同的向量中是否是一种好的做法?
- C++:在多个线程中访问同一数组/向量的不同单元格是否会产生数据竞赛?
- OpenCL 是否支持向量作为内核参数?
- 是否可以定义一个以向量<T>作为值的unordered_map?
- 是否可以在类中存储unique_ptr,并在C++中存储向量?
- 是否可以使用宏来访问动态数组或向量中的元素或为其赋值
- 使用 std::vector::swap 方法在C++中交换两个不同的向量是否安全?
- C++ 在向量中使用指针是否可能导致指针悬空?
- 使用 Rcpp 加速替换迭代算法中的列表和向量元素是否合法?
- 检查两个向量是否并行的最有效方法
- 有没有办法搜索向量的元素,<String>然后检查它是否包含特定的字符,如果它确实打印了它
- 对象向量是否在堆或堆栈上分配C++?
- 检查向量是否使用除法和阻抗算法进行排序
- 使用 for 循环是否比在 C++ 中将内容保存在向量中更快?