我最近開始通過解決競爭性編程挑戰等來學習 C ,但我遇到了一個問題;有沒有辦法在一行中讀取未知/變化數量的元素?
例如,如果我只想讀取一行中的一個元素,我會這樣做:
cin >> x;
對于 2 個元素:
cin >> x >> y;
等等,但是有沒有辦法讀取這些變化的數量?假設給了我一個數字 N,它代表我必須閱讀的一行中的元素數量,有什么巧妙的方法可以解決這個問題嗎?提前致謝
uj5u.com熱心網友回復:
您可以多載>>
運算子 for std::array
。使用模板,從傳入的陣列大小中讀取要讀入的元素個數。
#include <array>
#include <iostream>
template <typename T, std::size_t N>
std::istream& operator>>(std::istream& in, std::array<T, N>& arr) {
for (std::size_t i = 0; i < N; i) {
in >> arr[i];
}
return in;
}
int main() {
std::array<int, 9> arr;
std::cin >> arr;
for (auto i : arr) {
std::cout << i << std::endl;
}
}
uj5u.com熱心網友回復:
您可以創建一個 while 回圈,并使用一個陣列來存盤您的輸入,如下所示:
int i = 0, tab[20];
while(i < 20)
{
cin >> tab[i];
i ;
}
在這里,您可以在名為 tab 的陣列中存盤 20 個值。
uj5u.com熱心網友回復:
例如,假設您有一個陣列,其中有 n 個元素并且您想列印它們。所以在這里你可以使用 for & while 回圈來簡單和最快的方式。
例子:
int n; // n elements
int data[n] = { 2, 3, 4, 5, ... ,n}; // array
for (int i = 0; i < n; i ) {
cout << data[i] << ", ";
}
上面的答案中給出了while回圈示例。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/443096.html
下一篇:C 程式在數字太大時列印0