Tôi hiện đang xây dựng một tập hợp các chức năng phổ biến (Triển khai thuật toán tìm kiếm) và nghĩ rằng tôi đang làm sai nhóm. Tại thời điểm này, tôi có một lớp học, Phân loại, đó là tuyên bố trong một tập tin gọi là Sorting.h (nó nơi nào gần xong chưa, btw) như sau:Tạo vùng chứa 'điều' trong C++ để giữ các chức năng tĩnh. 'Điều' nên là gì?
#ifndef SORTING_H
#define SORTING_H
#include <vector>
class Sorting {
private:
Sorting();
Sorting(const Sorting& orig);
virtual ~Sorting();
public:
static void bubbleSort(std::vector<int>& A);
// etc
};
#endif /* SORTING_H */
Bây giờ, vì các nhà xây dựng là tư nhân, một người sử dụng không thể khởi tạo lớp của tôi - nó có hiệu quả chỉ là một chủ cho các hàm tĩnh mà người dùng có thể gọi. Tuy nhiên, từ những gì tôi đã đọc của C + + cho đến nay - và từ nhìn vào các thư viện STL vv - Tôi nghĩ rằng tôi đang làm điều này sai. Thay vào đó tôi có nên có một không gian tên gọi là 'Phân loại' hay một thứ gì đó sắp xếp? Nếu vậy, tập tin tiêu đề của tôi (cái mà người dùng sẽ bao gồm) trông như thế nào? Và tôi có phải thay đổi cấu trúc của các tệp còn lại không? Hiện tại, mỗi bộ thuật toán nằm trong tệp cpp của chính nó (ví dụ: BubbleSort.cpp, CocktailSort.cpp, v.v.).
Xin lỗi vì câu hỏi trùng lặp - Tôi đã tìm kiếm C++ và không gian tên, nhưng tôi có những câu hỏi rất chung về không gian tên và không có vấn đề cụ thể nào.
'(Iterator đầu tiên, Iterator last)', để minh hoạ. – Potatoswatter
Cảm ơn. Tôi sẽ sớm chuyển sang các mẫu, tôi chỉ cố gắng tìm hiểu cách bạn cho biết một lớp/nguyên thủy có thể so sánh được trong C++ - tức là làm cách nào để biết rằng nó sẽ hoạt động khi "<" vv được gọi trên đó. Hay đó là điều mà người dùng cuối phải lo lắng? Như một câu hỏi khác - ở đây bạn đã đặt cocktail_sort và bubble_sort trong cùng một khai báo không gian tên - tôi có thể sử dụng nhiều tệp riêng biệt cho điều này không? – Stephen
@DeadMG: Hai đề xuất: 1. Tên loại thường mô tả loại trình vòng lặp được yêu cầu, ví dụ: 'RandomAccessReadableWriteableIterator' hoặc' ForwardReadableWriteableIterator'. 2. Để thay thế cho các trình vòng lặp, bạn có thể sử dụng các phạm vi, linh hoạt hơn và dễ sử dụng hơn. – Philipp