3
int arr[5] = {0,1,2,3,4};
vector<int> vec;
通常我们:使用数组的一部分初始化矢量?
vector<int> vec(arr, arr + sizeof(arr)/sizeof(int));
但如何做初始化向量VEC与ARR的只有前3个值? 我该如何初始化它与中间3值?
我必须初始化它的时候了,在多行不push_back
..
int arr[5] = {0,1,2,3,4};
vector<int> vec;
通常我们:使用数组的一部分初始化矢量?
vector<int> vec(arr, arr + sizeof(arr)/sizeof(int));
但如何做初始化向量VEC与ARR的只有前3个值? 我该如何初始化它与中间3值?
我必须初始化它的时候了,在多行不push_back
..
要调用的构造函数形式是这样的**:
template <class Iterator> vector(Iterator start, Iterator end);
所以,你可能会传递什么这就像一对迭代器。具体来说,只要两个指针指向同一个数组,并且只要第二个指针不在第一个指针之前(如果指针相等,则它们代表空的范围),就可以传递两个指针。
在您的例子,则在将指针传递到所述阵列的所述第一元件和一个指针(神话)阵列的elment-后的,最后一个元件:
vector<int> vec(arr, arr + sizeof(arr)/sizeof(int));
通常,你可以传入一个指向任何元素的指针作为开始,并且一个指针通过任何元素作为结束。
但我如何初始化矢量vec只有前3个值的ARR?
通行证在指向第一和一个过去的第三要素:
vector<int> vec(arr, arr+3);
而且我怎么用中间3个值初始化呢?
传入指向要复制的第一个项目的指针,并粘贴最后一个元素的指针。在这种情况下,索引1和4:
vector<int> vec(arr+1, arr+4);
template <class InputIterator> vector(InputIterator first, InputIterator last, const Allocator& alloc = Allocator());
+1和谢谢你:) – codekiddy 2012-04-24 14:07:38
小挑逗:你写了'[..]只要第二个出现在第一个'之后'。我认为这是不准确的 - 两个指针实际上可以相等。这将是一个空的范围。 – 2012-04-24 14:14:46
@FrerichRaabe - 谢谢! – 2012-04-24 14:16:34