vòng lặp lọc đầu vào tiêu chuẩn trong C++ là while(cin >> a)
- điều này sẽ đọc cho đến khi có là không có đầu vào nhiều hơn, hoặc những điều xấu khác xảy ra:
#include <vector>
#include <iterator>
#include <iostream>
int main() {
std::vector<int> nums;
while (std::cin >> a) {
nums.push_back(a);
}
std::copy(nums.begin(), nums.end(), ostream_iterator<int>{cout, " "});
}
Bạn cũng có thể sử dụng một lớp lót với vòng lặp đầu vào - con đường ngắn nhất để đọc các yếu tố trong một vector:
#include <vector>
#include <iterator>
#include <algorithm>
#include <iostream>
int main() {
std::vector<int> nums(std::istream_iterator<int>(std::cin), {});
std::copy(nums.begin(), nums.end(), std::ostream_iterator<int>{std::cout, " "});
}
Xem Ideone example here
Giả sử tuy nhiên bạn muốn bỏ qua tất cả sự tuyệt vời này của C++, IMHO không khuyến khích mạnh mẽ, bạn chỉ có thể:
#include <iostream>
int main() {
const int MAX_SIZE = 100;
int nums[MAX_SIZE];
int a;
int i=0;
while (std::cin >> a) {
nums[i++] = a;
}
// do your output
}
Lưu ý rằng bạn sẽ:
- cần phải đoán
MAX_SIZE
,
- hoặc tự xử lý phân bổ lại một khi bạn đọc những yếu tố hơn MAX_SIZE;
Do đó: sử dụng std::vector
!!
Nguồn
2016-11-05 11:05:26
Xem http://en.cppreference.com/w/cpp/container/vector (cụ thể, ví dụ ở cuối trang) – OMGtechy
bạn có suy nghĩ về giới hạn trên của mảng không thì tôi có thể giúp bạn. – NeoR
Không, không. Bạn không hiểu. Tôi muốn * cin * các yếu tố mà không có * cin * n chính nó. – Nson