在下面的代码中,
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;
}谢谢!
杰夫
发布于 2019-08-13 15:50:07
vector<int> avector (arr, arr + sizeof(arr) / sizeof(arr[0]) );从arr C样式数组初始化std::vector avector。
参数是迭代器。这些迭代器定义了一系列元素:
指向要复制的范围的第一个元素的迭代器copied.
arr + sizeof(arr) / sizeof(arr[0]):迭代器,指向要复制的范围的末尾元素。对于C风格的数组,C++11的方法是使用函数模板std::cbegin()和std::cend():
vector<int> avector(std::cbegin(arr), std::cend(arr));这种方法利用模板参数推导来推断C样式数组的大小。这种方法不太容易出错,因为它需要更少的输入。
发布于 2019-08-13 15:44:49
n = sizeof(arr) / sizeof(arr[0])是数组存储的元素数。
avector(arr, arr + sizeof(arr) / sizeof(arr[0])表示将数组arr的元素复制到向量avector中,从索引0复制到n-1 (包括索引)
发布于 2019-08-13 15:44:28
通过复制arr的所有元素来构造avector。
它使用向量的以下constructor:
template<类InputIt > InputIt (首先分配,最后分配,常量分配器& InputIt =分配器() );
https://stackoverflow.com/questions/57473221
复制相似问题