2010-10-30 41 views

Trả lời

14

Kể từ khi khai báo hàm bạn:

void printMatrix(vector< vector<int> > *matrix) 

xác một con trỏ, nó được chủ yếu thông qua tham khảo. Tuy nhiên, trong C++, nó tốt hơn để tránh con trỏ và vượt qua một tài liệu tham khảo trực tiếp:

void printMatrix(vector< vector<int> > &matrix) 

printMatrix(matrix1); // Function call 

này trông giống như một cuộc gọi chức năng bình thường, nhưng nó được thông qua tham khảo như đã nêu trong chức năng tờ khai. Điều này giúp bạn tiết kiệm từ những điều kiện không cần thiết cho con trỏ.

1

Trước tiên, bạn đang tạo sai.

vector<vector<int>> matrix1(3, vector<int>(3,0)); 

Bạn có thể chuyển giá trị hoặc tham chiếu hoặc bằng con trỏ (không được khuyến nghị). Nếu bạn đang chuyển đến một hàm không thay đổi nội dung, bạn có thể truyền theo giá trị hoặc bằng tham chiếu const. Tôi muốn tham chiếu const, một số người nghĩ rằng "đúng" cách là để vượt qua bằng giá trị.

void printMatrix(const vector<vector<int>> & matrix); 

// or 
void printMatrix(vector<vector<int>> matrix); 

// to call 
printMatrix(matrix1); 
+1

Đừng quên một khoảng trống trong mẫu lồng nhau, ví dụ: 'vector >', nếu không một số trình biên dịch sẽ khiếu nại về các thay đổi phải không hợp lệ. – casablanca

+0

Tôi sẽ chỉ sử dụng nhận xét của bạn làm ghi chú cho hiệu ứng đó. Nhưng có bất kỳ trình biên dịch có liên quan nào mà đây vẫn là một vấn đề không? –

Các vấn đề liên quan