Giá trị float có thể được sử dụng làm chỉ mục của mảng không? Điều gì sẽ xảy ra nếu một biểu thức được sử dụng làm chỉ mục dẫn đến giá trị float?Giá trị nổi dưới dạng chỉ mục trong một mảng trong C++
Trả lời
Giá trị float sẽ được đúc để int (nó có thể đưa ra cảnh báo hoặc lỗi tùy thuộc vào mức độ cảnh báo trình biên dịch của)
s1 = q[12.2]; // same as q[12]
s2 = q[12.999999]; // same as q[12]
s3 = q[12.1/6.2]; // same as q[1]
Yes. Nhưng nó là vô nghĩa. Giá trị float sẽ được cắt ngắn thành một số nguyên.
(Bạn có thể sử dụng std::map<float, T>
, tuy nhiên, nhưng hầu hết thời gian bạn sẽ bỏ lỡ các giá trị dự kiến vì sự thiếu chính xác.)
+1 cho 'std :: map' –
Đối với sự thiếu chính xác, tôi nghĩ rằng cần có một số cách để cung cấp chức năng so sánh của riêng bạn, nơi bạn có thể bao gồm một 'epsilon' ... một sự khoan dung của các loại. –
@Agnel Kurian std :: bản đồ tất nhiên cho phép bạn chính xác điều này –
Nó sẽ được đúc để int.
Mảng C++ là một chuỗi các vị trí bộ nhớ liền nhau. a[x]
có nghĩa là "vị trí bộ nhớ xth sau khi được trỏ đến bởi a
".
Điều gì có nghĩa là truy cập đối tượng 12.4 trong một chuỗi?
Lưu ý đối với người đi bộ: có, tôi biết chênh lệch mảng không phải là sự bổ sung đơn giản của số nguyên cho con trỏ: câu này giả định rằng "vị trí bộ nhớ" là kích thước của thành viên mảng, vì vậy đối với int a [], [5] có nghĩa là từ thứ năm, không phải là byte thứ năm. – Crashworks
Đây là lỗi. Trong [expr.sub]
:
Biểu thức sau biểu thức được theo sau bởi biểu thức trong dấu ngoặc vuông là biểu thức sau. Một trong các biểu thức sẽ có kiểu “con trỏ đến T” và cái còn lại sẽ có kiểu liệt kê hoặc kiểu không tách rời.
Tôi không biết điều khoản trong tiêu chuẩn chỉ định chuyển đổi đó sẽ xảy ra ở đây (thừa nhận, tôi sẽ không ngạc nhiên nếu điều khoản đó tồn tại), mặc dù thử nghiệm với ideone.com đã tạo ra lỗi biên dịch.
Tuy nhiên, nếu bạn đang chỉ định một lớp thay vì con trỏ — ví dụ: std::vector
hoặc std::array
— sau đó quá tải của operator[]
sẽ có ngữ nghĩa thông thường của cuộc gọi hàm và đối số dấu chấm động sẽ được chuyển đổi thành size_type
tương ứng.
- 1. Giá trị mảng Django dưới dạng
- 2. Chỉ định nhiều giá trị cho mảng trong C
- 3. hai mảng xác định tọa độ 2d, dưới dạng chỉ mục mảng, trong matlab/octave
- 4. Nhận giá trị chỉ mục mảng của 1000 mục lớn nhất trong một mảng bằng LINQ
- 5. Tìm chỉ mục của một danh sách giá trị trong một mảng có nhiều mảng
- 6. Định dạng một giá trị mảng bên trong một Heredoc
- 7. Hợp nhất hai mảng dưới dạng cặp giá trị khóa trong PHP
- 8. Nhận các giá trị chỉ mục hàng của Pandas DataFrame dưới dạng danh sách?
- 9. PHP: Giá trị có sẵn tiếp theo trong một mảng, bắt đầu bằng giá trị không được lập chỉ mục
- 10. Tạo một số nguyên từ ba giá trị bool dưới dạng bit trong C++
- 11. Bản đồ với Khóa dưới dạng Chuỗi và Giá trị dưới dạng Danh sách trong Groovy
- 12. Chuỗi dưới dạng các mảng của mảng trong javascript
- 13. Giá trị ô tham chiếu dưới dạng chuỗi trong Excel
- 14. Giá trị nguyên của loại thả nổi trong C
- 15. Loại bỏ một phần tử từ một mảng chỉ định một giá trị trong Javascript
- 16. Cách lấy giá trị tại một chỉ mục cụ thể của mảng Trong JavaScript?
- 17. Thêm giá trị cho một C# mảng
- 18. Chỉ mục mảng có thể được đặt tên trong C#?
- 19. Deserializing JSON với mảng được lập chỉ mục trong C#
- 20. Giá trị HEX trong Mục tiêu-C
- 21. C#: Thay đổi giá trị cho mỗi mục trong một mảng
- 22. Giá trị mảng định dạng AngularJS trong textarea
- 23. Giá trị x & y lạ được gửi dưới dạng
- 24. cách thêm giá trị dưới dạng giá trị cummulative trong cột riêng biệt?
- 25. Mảng 2D $ Chỉ mục trong AngularJS
- 26. chỉ mục mảng và địa chỉ trả lại cùng một giá trị
- 27. C++ nhận chỉ mục của phần tử mảng theo giá trị
- 28. Menu nổi bật trong Magento dưới quản trị
- 29. C#: Định dạng chuỗi giá trị giá
- 30. chỉ mục rõ ràng trong các mảng chữ C?
Âm thanh như bài tập về nhà? –
Một ý tưởng rất tồi vì lỗi làm tròn. Tuy nhiên, đôi khi điều này là hữu ích, nhưng sau đó giá trị phải được chuyển đổi thành số nguyên đầu tiên và giới hạn kiểm tra (hoặc giới hạn) được thực hiện trước khi truy cập. Hoạt động này có thể hữu ích, ví dụ: cho các giá trị xấp xỉ cho một hàm dấu phẩy động bằng cách sử dụng bảng tra cứu. – Tronic