簡體   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