- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
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/
Câu hỏi của tôi rất đơn giản. Có an toàn để làm như sau? Không cần lời khuyên đạo đức như "Đừng đặt tên cho hàm swap()!" hay bất cứ điều gì, file1.hpp // tiêu đề bảo vệ ở đây #include
Tôi rất tò mò nên đã kiểm tra mã nguồn của hàm swap! trên kho lưu trữ clojure, nó trông như thế này: (defn swap! "Hoán đổi nguyên tử giá trị của Atom thành:
Tôi đang triển khai một lớp có giao diện tương tự như std::array, có cả swap() và swap() không phải thành viên. Vì tôi muốn lớp của mình bắt chước một vùng chứa tiêu chuẩn, nên tôi muốn.
Câu hỏi này đã có câu trả lời ở đây: Lý do đằng sau việc hoán đổi chức năng thành viên (1 câu trả lời) Đã đóng 4 năm trước. Nếu Coll là loại vùng chứa tiêu chuẩn và a và b là các phiên bản của Coll thì:
int a=5; b=7; int *pa=&a, *pb=&b; Việc trao đổi giá trị của a và b khác với việc trao đổi giá trị của các con trỏ, tức là pa và pb (không phải *pa và *pb)? Kết quả của hai trường hợp có khác nhau không? Chúng ta là gì
Được rồi, đây là chương trình, hoàn toàn chính xác #include sử dụng không gian tên std; mẫu void Swap(T &a , T &b);
Hàm std::swap() có hoạt động bình thường trong một lớp có nhiều đối tượng khác nhau làm thành viên biến không? Đặc biệt, nếu một số thành viên trong số đó là những người gợi ý thông minh? kiểm tra lớp { ... std::shared_ptr
Tôi đang cố gắng triển khai thành ngữ sao chép và trao đổi trong lớp Ma trận tùy chỉnh của mình và tôi gặp một số khó khăn khi thực hiện trao đổi() như được đề xuất trong câu hỏi được liên kết: (Trình biên dịch tôi đang sử dụng dành cho MS VS2010 IDE
Tôi biết ADL là gì và tôi biết rằng trong C++, các hàm phạm vi bên trong ẩn các hàm phạm vi bên ngoài. Nghĩa là, tên không được tải lại trên phạm vi. Vì vậy, việc nạp chồng hàm cần phải được thực hiện trong cùng một phạm vi. Bây giờ câu hỏi của tôi là đối với đoạn mã chung này: #inclu
Cho hai std::vector v1, v2. Tôi muốn biết lợi ích của việc sử dụng std::swap(v1, v2) so với v1.swap(v2). Tôi đã triển khai một mã kiểm tra đơn giản theo quan điểm hiệu suất (tôi không chắc liệu nó có
std::string có chức năng hoán đổi hàm thành viên, đây là một cách hiệu quả để hoán đổi hai chuỗi lớn. Bây giờ chúng ta đã có ngữ nghĩa di chuyển, cho trước hai chuỗi lớn s1 và s2, đoạn mã sau đây s1.swap(s2);
Trong khi sử dụng thành ngữ sao chép và trao đổi trong một lớp có tham chiếu không đổi là thành viên, lỗi trên đã xảy ra. Mã mẫu: #include #include sử dụng std::reference_wra
Bối cảnh Hãy xem đoạn mã sau: #include namespace ns { struct foo { foo() : i(0) {} int i;
Chúng ta có: vector f(int); vector v; Điều này hoạt động: f(x).swap(v); Điều này không: v.swap(f(x)); Câu trả lời hay nhất: swap() thực hiện tham chiếu không cố định trên vectơ
Tôi đã định cấu hình một vị trí sản xuất và dàn dựng trong Azure, mỗi vị trí sử dụng cơ sở dữ liệu SQL Azure riêng. Mỗi chuỗi kết nối được cấu hình là "dính". Tuy nhiên, khi tôi hoán đổi vị trí sản xuất (đích) bằng vị trí dàn dựng (nguồn), tôi nhận được cảnh báo sau. Cái này
Tôi có đoạn mã sau: char swap(char reg, char* mem) { std::swap(reg, *mem); return reg } Tôi muốn mã này được biên dịch thành: swap;
Sắp xếp chèn của tôi bằng xor-swap không hoạt động, nhưng không có xor-swap thì nó vẫn hoạt động tốt. Làm cách nào để sửa thuật toán sắp xếp chèn trao đổi XOR của tôi? Sắp xếp chèn mà không cần trao đổi XOR - // sắp xếp mảng đã cho trong
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
Tôi đang triển khai thành ngữ sao chép và trao đổi cho một operator= của một đối tượng tham chiếu bộ nhớ không sở hữu nhỏ mà tôi đã thiết kế. Khi MemRef đề cập đến một khối bộ đệm có thời gian tồn tại mà tôi tin cậy, _ptr trỏ đến bộ đệm,
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' : function
Tôi là một lập trình viên xuất sắc, rất giỏi!