Tôi rất tò mò về thời gian tra cứu cuộc gọi đến std::get<>
trên số std::tuple<>
mất. Một số googling ngắn gọn (bao gồm cả các trang tham khảo thường có thông tin này) không có kết quả.Hiệu quả của std :: get with std :: tuple
Trực giác ban đầu của tôi (và sợ) là cấu trúc đệ quy của bộ dữ liệu (nếu được thực hiện dưới dạng mẫu biến thể) sẽ dẫn đến yêu cầu tìm kiếm N (gọi tới get<3>(t)
trông giống như t.rest().rest().first()
. hy vọng tôi cách tắt ở đây ...
Sau đó, một lần nữa, tôi hy vọng các trình biên dịch sẽ có thể tối ưu hóa này để trực tiếp trả lại đúng bù đắp mà không có sự cần thiết của việc N của các cuộc gọi.
về cơ bản những gì tôi muốn : có bảo đảm xác định về thời gian chạy không? điều này có hạn chế cách thực hiện std::tuple
không?
Phần có liên quan của tiêu chuẩn ở đây là ** 1.9 Thực thi chương trình [intro.execution] * * "1 Các mô tả ngữ nghĩa trong tiêu chuẩn quốc tế này là một máy trừu tượng không xác định tham số. Tiêu chuẩn này không yêu cầu cấu trúc của việc triển khai phù hợp. Đặc biệt, chúng không cần sao chép hoặc mô phỏng cấu trúc của máy trừu tượng. được yêu cầu để mô phỏng (chỉ) hành vi quan sát của máy trừu tượng như được giải thích below.5 " – TemplateRex