Tôi có một câu hỏi về cách tắt mới của định nghĩa vectơ trong C++ 11. Giả sử tôi có lớp sauC++ 11 khởi tạo vector trong một cuộc gọi hàm
struct Tester{
vector< vector<int> > data;
Tester(){
data = vector< vector<int> >();
}
void add(vector<int> datum){
data.push_back(datum);
}
};
Sau đó, các công trình sau đây như mong đợi:
int main(){
Tester test = Tester();
vector<int> datum = vector<int>{1,2,3};
test.add(datum);
}
nhưng điều này không:
int main(){
Tester test = Tester();
test.add(vector<int>{1,2,3});
}
Có thể ai đó xin giải thích sự khác biệt đối với tôi? Làm thế nào tôi có thể làm các phím tắt tôi cố gắng trong chính thứ hai()?
C++ 11 cho phép bạn rời khỏi không gian giữa mẫu dấu ngoặc: 'vector>' là hợp pháp. –
zneak
Bạn cũng nên đăng lỗi mà bạn nhận được với lần thử thứ hai của mình. Tắt đầu của tôi và không có trình biên dịch C++ 11 trong tay, tôi nghĩ nó sẽ làm việc với một trong hai danh sách khởi tạo ('test.add ({1,2,3})') hoặc với các dấu ngoặc đơn arount nó (' test.add (vector ({1,2,3})) '). –
zneak
'dữ liệu = vector < vector>();' là hoàn toàn thừa và có thể chỉ ra một sự hiểu lầm cơ bản trong C + + constructor và khởi tạo. –
PlasmaHH