Giúp đỡ Về Cách Return Trả Kết Quả Cho Mảng - Dạy Nhau Học

trong C++ muốn trả về mảng có nhiều cách :V

1 là xài output parameter:

void f(..., T* outputArray, size_t outputArrayMaxSize) { // tính toán ... // ghi kết quả vào outputArray for (size_t i = 0; i < outputArrayMaxSize; ++i) { outputArray[i] = ...; } }

2 là trả về std::vector, nên xài cách này :V

#include <vector> std::vector<T> f(...) { // khai báo mảng trả về, với resultSize là kích thước của mảng std::vector<T> result(resultSize); // tính toán ... // ghi giá trị vào mảng for (size_t i = 0; i < result.size(); ++i) { result[i] = ...; } // hoặc nếu ko biết trước kích thước mảng trả về thì xài for (...) { //... result.push_back(someValue); } return result; // trả về mảng }

2 rưỡi :V :V là kết hợp 1 và 2, đa số ko xài :V

void f(..., std::vector<T>& output) { //... }

3 là xài std::array, chỉ xài được khi biết trước kích thước của mảng trả về

// ví dụ biết kích thước mảng trả về là 10 #include <array> std::array<T, 10> f(...) { // khai báo mảng trả về std::array<T, 10> result{}; // dấu {} là gán 0 cho các giá trị trong mảng :V // tính toán ... // ghi giá trị vào mảng for (size_t i = 0; i < result.size(); ++i) { result[i] = ...; } return result; // trả về mảng }

3 rưỡi, kết hợp 1 và 3, đa số ko xài :V

void f(..., std::array<T, 10>& output) { //... }

Từ khóa » Hàm Trả Về Mảng Trong C