如何理解"vector<int> avector (arr, arr + sizeof(arr) / sizeof(arr[0]) )"?
How to understand "vector<int> avector (arr, arr + sizeof(arr) / sizeof(arr[0]) )"?
在下面的代码中,是什么意思
vector<int> avector (arr, arr + sizeof(arr) / sizeof(arr[0]) );
在main()
?
vector<int> bubbleSort(vector<int> avector) { //the vector for bubble sort
for (int passnum = avector.size()-1; passnum > 0; passnum -= 1) {
for (int i = 0; i < passnum; i++) {
if (avector[i] > avector[i+1]) {
int temp = avector[i];
avector[i] = avector[i+1];
avector[i+1] = temp;
}
}
}
return avector;
}
int main() {
// Vector initialized using a static array
static const int arr[] = {54,26,93,17,77,31,44,55,20};
vector<int> avector (arr, arr + sizeof(arr) / sizeof(arr[0]) );
vector<int> bvector = bubbleSort(avector);
for (unsigned int i = 0; i < bvector.size(); i++) {
cout<<bvector[i]<< " ";
}
return 0;
}
谢谢!
杰夫
vector<int> avector (arr, arr + sizeof(arr) / sizeof(arr[0]) );
从arr
C 样式数组中初始化一个std::vector
avector
。
参数是迭代器。这些迭代器定义了一系列元素:
arr
:迭代到要复制的范围的第一个元素。arr + sizeof(arr) / sizeof(arr[0])
:迭代器指向要复制的范围的过去结束元素。
C++11 方法是将函数模板std::cbegin()
和std::cend()
用于 C 样式数组:
vector<int> avector(std::cbegin(arr), std::cend(arr));
此方法利用模板参数推导来推断 C 样式数组的大小。这种方式不太容易出错,因为它需要较少的打字。
n = sizeof(arr) / sizeof(arr[0])
是数组存储的元素数。
avector(arr, arr + sizeof(arr) / sizeof(arr[0])
表示将数组的元素arr
复制到向量avector
从索引0
复制到n-1
(含)
avector
是通过复制arr
的所有元素来构造的。
它使用以下矢量构造函数:
template< class InputIt > vector( InputIt first, InputIt last, const Allocator& alloc = Allocator() );
相关文章:
- arr[-1]在c++中的奇怪行为
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 如何使我的 sizeof sum 结构与空参数包一起工作
- 同一对象的"sizeof"的不同答案
- 在C++中用新表达式制作 arr[n][n]
- 为什么数组大小信息可用于"sizeof"运算符和 delete[] 运算符,但在将数组作为参数传递到
- 为什么 sizeof 在 C++ 中给出不正确的字节数?
- sizeof(size_t) 可以小于 sizeof(int) 吗?
- different between int **arr =new int [ n]; and int a[i][j]?
- arr[n] 是否以 C++ 为单位打印数组的长度?
- 字符串数组上的 sizeof 运算符以 C++ 为单位给出不同的输出
- 为什么 sizeof(ar)/ sizeof(ar[0]) 在传递给函数时无法在向量上正常工作?
- 为什么存储在数组中的地址值与其自己的地址相同,它应该指向某个不同的地址(&arr[0])?
- C++:' arr '和' arr[] '有什么区别
- 在 C/C++ 中将数组作为形式参数作为 int arr[] 和 int arr[N] 传递的区别
- 为什么 MSVC _count_of实现将 0 添加到 sizeof 的结果中?
- alignas() 对 sizeof() 的影响 - 强制性的?
- 在C++中,运算符 sizeof 返回什么数据类型?
- 如何理解"vector<int> avector (arr, arr + sizeof(arr) / sizeof(arr[0]) )"?
- sizeof(arr) / sizeof(arr[0]) 如何工作