Tôi có một vectơ con trỏ không thuộc sở hữu của vùng chứa. Làm cách nào để sử dụng các thuật toán trên các mục tiêu của con trỏ. Tôi đã cố gắng sử dụng ptr_vector của boost, nhưng nó cố gắng xóa các con trỏ khi nó nằm ngoài phạm vi.làm cách nào để sử dụng thuật toán STL với vectơ của con trỏ
Dưới đây là một số mã mà cần phải làm việc:
vector<int*> myValues;
// ... myValues is populated
bool consistent = count(myValues.begin(), myValues.end(), myValues.front()) == myValues.size();
auto v = consistent ? myValues.front() : accumulate(myValues.begin(), myValues.end(), 0)/myValues.size();
fill(myValues.begin(), myValues.end(), v);
// etc.
Tôi nhận ra rằng cho vòng sẽ làm việc, nhưng điều này sẽ xảy ra trong một loạt các nơi, do đó một số loại bộ chuyển đổi unary? Tôi đã không thể tìm thấy một. Cảm ơn trước!
Nếu bạn sử dụng các tính năng của tiêu chuẩn C++ chưa được phê duyệt trong tương lai, bạn sẽ giới hạn câu trả lời bạn nhận được. Nó là rất không rõ ràng nếu câu hỏi của bạn là về thư viện tiêu chuẩn hiện tại, việc sử dụng Boost, hoặc các tính năng mới của C++ 0x. –
Có vẻ như v được cho là giá trị trung bình của các int, nhưng sau đó dòng sao chép cố gắng sao chép vào v, do đó v sẽ phải là một con trỏ hoặc trình lặp. –
ồ vâng, dòng cuối cùng là sai ... Tôi muốn viết "điền" thay vì "sao chép". –