Я просматривал некоторые проблемы с кодированием, и я столкнулся с проблемой, когда входной массив задан как "int *" вместо вектора.
Это заставило меня задуматься, как перебирать этот массив если бы мы не знали размер:
vector<int> cellCompete(int* states, int days)
{
// my try:
for (; *states; states++ ) {
cout << *(states) << " ";
}
vector<int> testArray;
return testArray;
}
Как вы можете видеть, я попробовал простой способ перебора массива, пытаясь проверить, будет ли указатель возвращать nullptr вточка.
Пример:
[1, 0, 0, 0, 0, 1, 0, 0] returned "1" as output
[1, 1, 1, 0, 1, 1, 1, 1] returned "1 1 1" as output.
Однако этот подход работал в следующем примере:
#include <iostream>
using namespace std;
int main () {
// an array with 5 elements.
double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};
double *p;
p = balance;
for (; *p; p++ ) {
cout << *(p) << endl;
}
return 0;
}
Это вопрос https://www.geeksforgeeks.org/active-inactive-cells-k-days/, ноЯ не могу поделиться ссылкой, где я сталкивался с вопросом, потому что это конфиденциально.В версии, которую я должен был решить, функция ввода была "int *" вместо других опций.
Доп. Функции : На том же веб-сайте мой подход работал для другого вопроса с аналогичным вводом:
int generalizedGCD(int num, int* arr)
{
// WRITE YOUR CODE HERE
for (; *arr; arr++ ) {
cout << *(arr) << " ";
}
return 1;
}
где входные примеры были:
[2, 3, 4, 5, 7] и [2, 4, 6, 8, 10]
Есть ли более надежный способ перебирать указатель на массив , когда мы не знаем размер массива?
Ни один из источников, которые я обнаружил в Интернете, не дает путиитерировать , не зная размера.
Я хотел выразить, что этот вопрос действительно указывает размер массива, но он просто заставил меня задуматься, есть ли способ итерации без заданного размера.