tôi có một std::vector<std::vector<double>>
và muốn thêm một số yếu tố ở phần cuối của nó vì vậy đây là thử nghiệm của tôi:emplacement của một vector với danh sách initializer
std::vector<std::vector<double> > vec;
vec.emplace_back({0,0});
nhưng điều này không biên dịch trong khi sau đây sẽ làm:
std::vector<double> vector({0,0});
Tại sao emplace_back không thể xây dựng phần tử ở vị trí này? Hay tôi đang làm gì sai?
Cảm ơn sự giúp đỡ của bạn.
cảm ơn, nhưng tôi có một câu hỏi như thế này: Tại sao nó làm việc cho ví dụ thứ hai? Vì trình biên dịch có thông tin tương tự về kiểu (emplace_back sẽ lấy đối số cho một hàm tạo của std :: vector và ví dụ thứ hai) –
m47h
Vì trong ví dụ thứ hai, bạn gọi hàm tạo của vectơ, có thể xử lý danh sách khởi tạo trực tiếp. – marli
Vì vậy, bạn không tạo được hiệu quả, nhưng chỉ cần đẩy một phần tử đã được xây dựng, thay vì xây dựng vectơ tại chỗ. –