2012-06-21 29 views
5

valarray có liên kết bộ nhớ liền kề không?Có valarray có liên kết bộ nhớ tiếp giáp?

Tôi muốn chuyển một giá trị vào một hàm (từ IPPS), chỉ lấy con trỏ, bằng cách đi qua &myValarray[0]. Nhưng do đó tôi nên chắc chắn, sự liên kết bộ nhớ của valarray là tiếp giáp.

Cảm ơn!

+2

Ai đó vẫn đang sử dụng valarray? – Puppy

+1

@DeadMG Giải pháp thay thế là gì? Bạn chỉ muốn sử dụng các vectơ đang giữ các giá trị, và việc sử dụng chúng phải được, nếu có thể, thuận tiện như trong Matlab. Và valaray dường như họ có thể đáp ứng nhu cầu của tôi (để tính toán số). – Massoud

+0

@DeadMG Tôi sử dụng nó thường xuyên. Giao diện của nó làm cho nó dễ dàng để viết các thuật toán chung mà làm việc với cả hai vô hướng và vectơ. Và vì nó là một phần của tiêu chuẩn, bạn không phải dựa vào một thư viện nào khác. –

Trả lời

11

Giả sử bạn đang hỏi liệu bộ nhớ được quản lý bởi một valarray được đảm bảo là tiếp giáp, thì câu trả lời là có, ít nhất nếu đối tượng không phải là const (C++ 03, §26.3.2.3/3 hoặc C++ 11, §26.6.2.4/2):

Khái niệm & a [i + j] == & a [i] + j đánh giá là đúng cho tất cả size_t i và size_t j đó rằng i + j nhỏ hơn độ dài của mảng không liên tục a.

+0

Cảm ơn @ Terry Coffin, tôi có thể hỏi, tại sao valarray không thể không đổi để đáp ứng yêu cầu này? – Massoud

+0

@Massoud: nếu bộ nhớ phục vụ, bạn không thể sử dụng '&' trên một phần tử của 'const valarray'. –

+0

@JerryCoffin: 'const T & toán tử [] (std :: size_t pos) const;' có sẵn từ C++ 11. –

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