小编bqu*_*nin的帖子

是否可以确定c ++枚举类的元素数量?

是否有可能确定c ++的基数enum class:

enum class Example { A, B, C, D, E };
Run Code Online (Sandbox Code Playgroud)

sizeof但是,我尝试使用它返回枚举元素的大小.

sizeof(Example); // Returns 4 (on my architecture)
Run Code Online (Sandbox Code Playgroud)

有没有一种获得基数的标准方法(在我的例子中为5)?

c++ cardinality c++11 enum-class

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

在shared_ptr容器中查找元素?

我在向量中找到一个元素时遇到了一些问题shared_ptr.

这是我最终得到的:

std::vector<std::shared_ptr<Block>> blocks;

bool contains(Block* block) {
  for (auto i = blocks.begin(); i != blocks.end(); ++i) {
    if ((*i).get() == block) {
      return true;
    }
  }
  return false;
}
Run Code Online (Sandbox Code Playgroud)

但是,我没有成功,std::find甚至没有std::find_if.是否有更符合c ++的方法来实现这一目标?

编辑:这是我在答案后的代码:

bool contains(Block* block) {
  auto found = std::find_if(blocks.begin(), blocks.end(), [block](std::shared_ptr<Block> const& i){
    return i.get() == block;
  });
  return found != blocks.end();
}
Run Code Online (Sandbox Code Playgroud)

c++ containers pointers

5
推荐指数
1
解决办法
3085
查看次数

标签 统计

c++ ×2

c++11 ×1

cardinality ×1

containers ×1

enum-class ×1

pointers ×1