小编Yuc*_*l_K的帖子

std :: find在空向量上是否会导致未定义的行为?

试图找到一个信息,如果在std :: find期间使用了一个空向量,但找不到任何信息,那么会发生什么.

我的问题是,如果一个空向量传递给std :: find,返回值总是一个nullptr还是未定义的行为?

  std::vector<int> someDataContainer;
  auto it = std::find(someDataContainer.begin(), someDataContainer.end(), 1);
Run Code Online (Sandbox Code Playgroud)

c++ vector std c++11

1
推荐指数
3
解决办法
420
查看次数

如何简化 std::variant 类类型

我确信有一种简单的方法可以做到这一点,但在 SO 中找不到任何东西。在en.cppreference.com 中也找不到太多信息。

有没有办法简化 ,std::variant</*class types*/>以便我们可以声明可以std::variant作为参数的函数和类。

考虑这个例子:

我有一个向量,它充当以下内容的容器std::variant

std::vector<std::variant<Car, Space, Human>> EntityContainer;
Run Code Online (Sandbox Code Playgroud)

如果我想将此向量作为参数传递给函数,则必须添加以下参数声明。

void Function(std::vector <std::variant<Car, Space, Human>>& container);
Run Code Online (Sandbox Code Playgroud)

我也许可以在这个例子中使用,但这并不能真正解决问题。

有没有更好的解决方案,而不是std::variant在项目的任何地方一遍又一遍地列出相同的类类型?

代码直播

#include <iostream>
#include <vector>
#include <variant>


class Human
{
public:
  void Talk(){ std::cout << "whass up\n"; }
};
class Car
{
public:
  void RunEngine() { std::cout << "Vroom\n"; }
};
class Space
{
public:
  void Expand() { std::cout << "Expand slowly\n"; }
};

struct VisitPackage …
Run Code Online (Sandbox Code Playgroud)

c++ variant c++17 std-variant

0
推荐指数
1
解决办法
1637
查看次数

标签 统计

c++ ×2

c++11 ×1

c++17 ×1

std ×1

std-variant ×1

variant ×1

vector ×1