Как указано в ответе R Саху , если вы не хотите делать копию, вы не можете многое сделать в рамках ограничения Стандарта.
Однако вы можете отслеживать свои изменения в другой структуре данных. Возможность будет std:map<class key, class value>
:
- Ключом карты будет индекс массива типа
int
- Значение - это измененное значение вашего исходного массива.
С этого момента вам нужно только выполнить условную проверку, присутствует ли индекс массива на карте. Это можно сделать с помощью 'std :: map :: find' . Таким образом:
- Если индекс массива находится в
std::map
, вернуть значение в std::map
- Если индекс массива отсутствует в
std::map
, вернуть исходное значение массива
Если вы выполняете последовательный обход массива, это можно ускорить, используя свойство обхода карты. В представленном примере это может быть:
int passarr(int b[],int s) {
std::map<int,int> mod;
std::map<int,int>::iterator it;
//Some Modification in the array b
mod[0]=0;
mod[s-1]=0;
//Printing the array b
it=mod.begin();
for(int i=0;i<s;i++) {
if (i == it->first) {
std::cout << it->second << " ";
it++;
else { std::cout<<b[i]<<" "; }
}
std::cout<<endl;
}