是否有可能确定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)?
我在向量中找到一个元素时遇到了一些问题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)