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

Hoán đổi C++() cho chỉ mục deque

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 04:50:25 27 4
mua khóa gpt4 Nike

Tôi có hai câu hỏi, câu hỏi thứ hai là tùy chọn. Đầu tiên, trong chương trình bên dưới (nguyên mẫu của chương trình thẻ đơn giản), tôi gặp lỗi sau:

(29): lỗi C2660: 'shuffle' : hàm không nhận 1 đối số với đoạn mã sau:

#include "stdafx.h"
#include
#include
#include
#include
using namespace std;

deque cardDeck (51);
void flip(); //Lật nguyên mẫu()
void shuffle(); // Nguyên mẫu xáo trộn()

int _tmain(int argc, _TCHAR* argv[])
{
ostream& operator<<(ostream& os, deque dq); //quá tải toán tử << để chấp nhận deque
// đối số
for (int a=52; a>0; a--) { //khởi tạo 52 lá bài trong một bộ bài
cardDeck.push_front(a);
}
flip(); //nhắc tôi nhập dữ liệu để kiểm tra
return 0;
}

void flip() // lật thẻ ở vị trí được chỉ định trong bộ bài
đầu vào int;
cin >> đầu vào;
cout<<><>
xáo trộn(cardDeck);
lật();
}

void shuffle(deque dq) { //sử dụng thuật toán Fisher-Yates để hiệu quả và chính xác
//thứ tự thẻ ngẫu nhiên
for(int i=dq.size()-1; i>-1; i--) {
int j = rand() %(i + 1);
nếu(i != j) {
trao đổi(dq[j], dq[i]);
}
}
}

Tại sao tôi nhận được lỗi này? (Tôi nhìn xung quanh và cố gắng tự mình tìm ra)

Thứ hai, tôi không chắc liệu mình có đang triển khai chính xác thuật toán Fisher-yates hay không, vì không dễ tìm thấy tài liệu C++ về nó (đối với phiên bản sử dụng swap(); ) (Brownie chỉ ra câu trả lời này hoặc chỉ ra bất kỳ thực hành mã hóa cực kỳ tệ, không bao gồm các lớp bị thiếu)

Cảm ơn trước!

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

Lý do bạn gặp phải lỗi này là vì bạn声明 xáo trộn Một hàm không chấp nhận bất kỳ tham số nào.

void shuffle();

Một lưu ý khác là bạn có thể muốn có quyền truy cập vào deque trong chức năng nàyTrích dẫn, nếu không bạn sẽ gây rối với bản sao cục bộ và không gặp phải tác dụng phụ như mong đợi.

Bạn có thể muốn nó trông như thế này:

void shuffle(deque& dq);

Ngoài ra, bạn có thể muốn sử dụng iter_swap thay vì tráo đổi để trao đổi các phần tử. Trong dequeue có lẽ nó sẽ không tạo ra sự khác biệt nào, nhưng đối với danh sách hoặc bản đồ Nó sẽ.

Về C++ swap() để lập chỉ mục deque, 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/7343184/

27 4 0
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