cuốn sách gpt4 ai đã làm

Sự khác biệt giữa v[0], v.begin() và v.data() của vector v là gì?

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 15:11:20 28 4
mua khóa gpt4 Nike

Tôi cần hiển thị một vectơ được sắp xếp bằng thuật toán sắp xếp hợp nhất. Tuy nhiên, khi tôi sử dụng v.begin(), bạn tôi sử dụng v.data() để truyền vectơ. Mã của anh ấy hoạt động tốt, mã của tôi thì không. Hãy giải thích.

Tôi đã thử chuyển v[0] và v.begin(). Nó không hoạt động.

void merge_sort(int *a, int i, int j);

void merge_sort(int *a, int i, int j)
{
int giữa;

if (i < j) {
giữa = (i + j) / 2;

merge_sort(a, i, mid); // đệ quy trái

merge_sort(a, mid + 1, j); // đệ quy phải

merge(a, i, mid, mid + 1, j);
}
}

int main()
{

int số;
cout << "Nhập độ dài mảng (n) = ";
cin >> số;

vector a(num);

cout << "Nhập số:" << endl;
cho (int i = 0; i < num; i++)
cin >> a[i];

merge_sort(a.data(), 0, num - 1);

cout << "\nĐã sắp xếp mảng :\n";
cho (int i = 0; i < num; i++)
cout << a[i] << " ";

cout << endl;
return 0;
}

v.begin() và v[0] hiển thị lỗi, trong khi v.data() hoạt động hoàn hảo.

câu trả lời hay nhất

Giả sử một vectơ vkiểu std::vector .Sau đó:

  • v[0]Trả về phần tử vectơ đầu tiênTrích dẫnvKhông được để trống (nếu không, hành vi sẽ không được xác định). Kiểu biểu thức này là int&hoặc const int& .

  • v.data()Trả về một con trỏ tới phần tử vector đầu tiêncon trỏ,nếu nhưv Sau đó, một số giá trị con trỏ không xác định được trả về là null. Kiểu biểu thức này là int*hoặc const int* .

  • v.bắt đầu()Trả về phần tử vectơ đầu tiên迭代器,hoặcv.end()nếu nhưvtrống rỗng. Kiểu biểu thức này là std::vector::iteratorhoặc std::vector::const_iterator .

do bạn merge_sortMong đợi, như đối số đầu tiên của nó, một con trỏ ( int* a ), thì trong ba biểu thức này chỉ có v.data()Có loại phù hợp. Hoặc tất nhiên bạn cũng có thể gửi&v[0]cũng như&*v.begin() .

Về c++ - sự khác biệt giữa v[0], v.begin() và v.data() của vector v là gì? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/58464546/

28 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress