c++ - 使用回调初始化 vector

标签 c++ c++11 stl

假设我有一个类:

MyType callback(){
 /// randomize here
 .....
 .....
 return randomValue;
}

class MyClass{
private:
  std::vector< MyType > m_vector;

public:
  MyClass( unsigned int size ):m_vector(size, callbackHere? );
};

我需要用我生成的值初始化 vector ,我该怎么做? 一种解决方案是为 MyType 创建一个空构造函数,这就是我所拥有的,但现在我想成对替换 MyType,因此空构造函数不起作用。

我的回调将返回随机值,所以最后我想要一个包含一些随机值的 vector 。

谢谢

最佳答案

你可以写一个自定义的类似迭代器的类型

  • 在调用前/后缀 ++ 时生成一个新值
  • 在通过 operator*
  • 取消引用时生成生成的值
  • 当你完成生成值时,等于一些哨兵对象(end 迭代器)

关于c++ - 使用回调初始化 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21509225/

相关文章:

c++ - 为什么编译器推迟 std::list 释放?

c++ - 底层 STL:在没有新 vector 的情况下将 std::vector 连接到自身

c++ - 您可以使用零模板参数的模板做什么?

c++ - 功能不保存到结构

C++14 在类构造函数初始化列表中初始化继承成员

c++ - 如何使用自定义分配器创建 std::function?

c++ - 错误 : no matching function for call to [. ..] 注意:模板参数推导/替换失败

c++ - 如何在 C/C++ 源代码中使用函数 typedef?

c++ - 在 C++ 中将字符串转换为无符号数的正确方法

c++ - 忽略交换函数的重载