Tôi có một chương trình C++ mà tôi muốn chèn các giá trị mặc định cho bất kỳ phím nào bị thiếu trong một số std::map
. Tôi nghĩ cách dễ nhất để làm điều này là sử dụng std::map::operator[]()
như lệnh cảm ứng POSIX - nghĩa là, để nguyên giá trị không thay đổi nếu nó đã tồn tại, nhưng để tạo nó nếu không. Đối với example,Tôi có thể dựa vào std :: map :: operator [] để liên lạc không?
#include <map>
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> keys = {0, 1};
map<int, int> m;
m[1] = 5;
m[2] = 12;
for (const int i : keys)
{
m[i]; // touch value
}
for (auto const & kv : m)
{
cout << kv.first << ", " << kv.second << endl;
}
}
Tôi có thể chắc chắn rằng trình biên dịch sẽ không tối ưu hóa ra m[i];
báo cáo, vì tôi không "làm" bất cứ điều gì với họ? (Không chỉ định rõ ràng, không đọc từ.)
Bạn có thể trích dẫn nguồn không? –
@ cp.engr Xem chỉnh sửa. –
Cảm ơn. Tôi có thể đề xuất trích dẫn bit này trong câu trả lời của bạn không? "một thực hiện thực tế không cần đánh giá một phần của một biểu thức nếu nó có thể suy ra rằng giá trị của nó không được sử dụng và không có tác dụng phụ nào ảnh hưởng đến hành vi quan sát được của chương trình được tạo ra". Từ blockquote thứ hai trong câu trả lời được chấp nhận mà bạn đã liên kết. –