代码之家  ›  专栏  ›  技术社区  ›  Alexey mcont

从数组构造向量

  •  6
  • Alexey mcont  · 技术社区  · 13 年前

    This 状态I可以从数组中构造向量,如下所示:

    // the iterator constructor can be used to construct from arrays:
    int myints[] = {16,2,77,29};
    vector<int> myvector (myints, myints + sizeof(myints) / sizeof(int) );
    

    为什么构造函数的第二个参数 myints + sizeof(myints) / sizeof(int) ?

    3 回复  |  直到 13 年前
        1
  •  10
  •   juanchopanza    13 年前

    表达式 sizeof(myints) / sizeof(int) 获取 myints 大堆

    我的观点 获取指向数组的第一个元素的指针。

    因此表达式 myints + sizeof(myints) / sizeof(int) 是指针过了 我的观点 数组,即 two-iterator constructor of std::vector 预期。这将创建一个向量,其中包含原始数组中所有元素的副本。

    请记住,指针是迭代器,因此以上内容等效于

    vector<int> myvector (std::begin(myints), std::end(myint));
    
        2
  •  1
  •   Galimov Albert    13 年前

    它的指针指向 整数 在最后一个元素之后。所以它变成了begin()和end()

        3
  •  1
  •   jwismar    13 年前
    sizeof(myints) / sizeof(int) 
    

    是数组中的元素数。

    myints + sizeof(myints) / sizeof(int)
    

    为您提供了一个内存位置,该位置位于数组末尾之后。

    STL对第一个元素使用迭代器,并在末尾使用一个迭代器来指定范围。向量构造函数正在使用这样的范围。