繁体   English   中英

标准::向量<int>到 std::vector<enum></enum></int>

[英]std::vector<int> to std::vector<enum>

我有一个数组std::vector<int>和一个enum class Foo: int 有没有比reinterpret_cast更好的转换或转换方法?

std::vector<int> v;
auto& c = *reinterpret_cast<std::vector<Foo>*>(&v);

https://godbolt.org/z/M6ofkF

static_caststd::transform结合起来。

#include <algorithm>
#include <vector>
#include <cassert>

enum class Foo : int {
   A = 0,
   B = 1,
   C = 2,
   D = 3,
   E = 4,
   F = 5
};

std::vector<Foo> convert(std::vector<int> const &in) {
  std::vector<Foo> out;
  out.reserve(in.size());

  std::transform(in.begin(), in.end(), std::back_inserter(out),
                 [](int n) { return static_cast<Foo>(n); });
  return out;
}

int main() {
  std::vector<int> vec{1, 2, 3, 4, 5};
  std::vector<Foo> c = convert(vec);

  assert(c[3] == Foo::E);

  return 0;
}

参考: 如何在 C++ 中将 int 转换为枚举?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM