在构造时使用整数序列填充向量

用户名

我正在尝试在向量的构造填充一个vector(或其他容器)整数序列(与此问题相反)。以下代码可以实现我的预期,将范围构造函数用于,以及Boost的counting_rangevector

#include <iostream>
#include <vector>
#include <boost/range/counting_range.hpp>

using namespace std;

int main () {
    vector<int> test_vector(boost::counting_range(2,10).begin(),boost::counting_range(2,10).end());
    for (auto i : test_vector)  cout << i << endl;
}

问题:

  1. 我可以消除重复counting_range(2,10).begin()counting_range(2,10).end()目前,我指定(2,10)的范围两次。
  2. 仅使用香草C ++ 11或C ++ 0x就可以在没有Boost的情况下完成此工作吗?编辑:还是C ++ 14?

编辑:

  • 我想在单个语句中实例化向量并指定范围例如在Python中我可以写test_vector=range(2,9)在R / Octave / Matlab中,您可以编写test_vector=2:9test_vector=seq(2,9,1)在这方面,我对上面的内容感到满意。
  • 我在上面使用了“ 2”和“ 10”,但是范围的边界可以是动态的,范围内的任何整数ab等于a≤b因此,像{2,3,...,9}这样的初始化列表是不可取的,因为它必须在编译时指定。
  • 我上面使用的方法还可以用于在单个语句中初始化其他容器。以下内容也适用:

    unordered_set test_set(boost::counting_range(2,10).begin(),boost::counting_range(2,10).end());

    如果任何解决方案也可以是“与容器无关的”,那就太好了。

  • 我同意@ david-rodriguez-dribeas的观点,我们可以通过在构造函数的主体中初始化向量来遵守Meyer的Item。不必在构造函数的初始化列表中完成。所以我在下面删除了这部分。

动机

我之所以这样做,是因为我想在我的代码其他地方的有效C ++中服从Meyer的条款4(“确保对象在使用之前已初始化。”)。例如:

class my_class {
public:
    my_class()
    :vec(boost::counting_range(2,10).begin(),boost::counting_range(2,10).end()) {}
    vector<int> vec;
};

大卫·罗德里格斯(DavidRodríguez)-德里贝斯

不要结束。简单的事情是默认初始化向量,保留并从范围初始化。

确保在使用对象之前将其初始化。

这并不意味着必须在初始化列表中对成员进行完全初始化,而不是my_class在构造函数完成时必须对象进行完全初始化。

除此之外,仅出于此目的,您可以在香草C ++中执行不同的操作来处理此问题,例如创建一个辅助函数并按值返回向量:

std::vector<int> create_vector() {
   std::vector<int> v;
   // ...
   return v;
}

但是,仅在需要时,我才不会使用此(或任何其他替代方法)来初始化成员(向量const可能是足够的借口:))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用python用重复的整数序列填充np数组

来自分类Dev

对向量中的整数序列求和

来自分类Dev

对向量中的整数序列求和

来自分类Dev

构造时保留子向量

来自分类Dev

根据向量序列用NA填充行

来自分类Dev

如何从整数序列构造String实例?

来自分类Dev

如何使用R将整数向量有效折叠到序列的data.table中?

来自分类Dev

使用for循环使用整数序列填充数组,而不会导致Chrome崩溃

来自分类Dev

是什么导致此构造函数在接受初始化程序列表和向量时委托给自身?

来自分类Dev

用已知数量的元素填充向量:在构造函数中指定其大小还是使用保留方法?

来自分类Dev

具有构造函数填充的向量的C ++奇数行为

来自分类Dev

在类和构造函数中使用向量时出现分段错误

来自分类Dev

当使用@JsonValue反序列化类时,Jackson比@JsonCreator更喜欢私有构造函数

来自分类Dev

何时不考虑在C ++中选择可行的构造函数时使用用户定义的转换序列?

来自分类Dev

没有反序列化的相应值时,如何使用构造函数的默认参数值?

来自分类Dev

创建由“从”和“到”向量定义的整数序列

来自分类Dev

用单个数字替换向量中的整数序列

来自分类Dev

使用放置构造恒定大小的矩阵向量

来自分类Dev

如何正确使用向量范围构造函数?

来自分类Dev

使用默认构造函数嵌入向量

来自分类Dev

如何使用由 for 循环创建的向量向量构造链表?

来自分类Dev

使整数序列在编译时唯一

来自分类Dev

使整数序列在编译时唯一

来自分类Dev

使用emplace_back向向量添加元素时,如何强制编译器使用默认构造函数?

来自分类Dev

使用参考指针中的信息填充向量

来自分类Dev

MATLAB使用日期数字填充向量

来自分类Dev

使用枚举指定的函数填充向量

来自分类Dev

使用从文件读取的数据填充对象向量

来自分类Dev

使用R构造时间序列的特定图

Related 相关文章

  1. 1

    使用python用重复的整数序列填充np数组

  2. 2

    对向量中的整数序列求和

  3. 3

    对向量中的整数序列求和

  4. 4

    构造时保留子向量

  5. 5

    根据向量序列用NA填充行

  6. 6

    如何从整数序列构造String实例?

  7. 7

    如何使用R将整数向量有效折叠到序列的data.table中?

  8. 8

    使用for循环使用整数序列填充数组,而不会导致Chrome崩溃

  9. 9

    是什么导致此构造函数在接受初始化程序列表和向量时委托给自身?

  10. 10

    用已知数量的元素填充向量:在构造函数中指定其大小还是使用保留方法?

  11. 11

    具有构造函数填充的向量的C ++奇数行为

  12. 12

    在类和构造函数中使用向量时出现分段错误

  13. 13

    当使用@JsonValue反序列化类时,Jackson比@JsonCreator更喜欢私有构造函数

  14. 14

    何时不考虑在C ++中选择可行的构造函数时使用用户定义的转换序列?

  15. 15

    没有反序列化的相应值时,如何使用构造函数的默认参数值?

  16. 16

    创建由“从”和“到”向量定义的整数序列

  17. 17

    用单个数字替换向量中的整数序列

  18. 18

    使用放置构造恒定大小的矩阵向量

  19. 19

    如何正确使用向量范围构造函数?

  20. 20

    使用默认构造函数嵌入向量

  21. 21

    如何使用由 for 循环创建的向量向量构造链表?

  22. 22

    使整数序列在编译时唯一

  23. 23

    使整数序列在编译时唯一

  24. 24

    使用emplace_back向向量添加元素时,如何强制编译器使用默认构造函数?

  25. 25

    使用参考指针中的信息填充向量

  26. 26

    MATLAB使用日期数字填充向量

  27. 27

    使用枚举指定的函数填充向量

  28. 28

    使用从文件读取的数据填充对象向量

  29. 29

    使用R构造时间序列的特定图

热门标签

归档