Ссылка на вектор в C++
При присваивании в новую переменную записывается копия вектора. Переменные никак не связаны, их можно менять независимо. Запишем копию и поменяем первый элемент копии. Исходный вектор останется прежним:
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec1 = {1, 2, 3, 4, 5};
std::vector<int> vec2 = vec1;
vec2[0] = 0;
std::cout << vec1[0] << "\n"; // выведет 1
return 0;
}
Можно сделать так, чтобы копировалось не значение,
а ссылка на него. При изменении одного имени
меняется и второе. Ссылку сразу связывают
с уже существующим вектором: после типа ставят
& и справа от = стоит этот вектор.
Запишем ссылку и поменяем первый элемент через нее:
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec1 = {1, 2, 3, 4, 5};
std::vector<int>& vec2 = vec1;
vec2[0] = 0;
std::cout << vec1[0] << "\n"; // выведет 0
return 0;
}
Расскажите, каким будет результат выполнения кода:
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec1 = {8, 9};
std::vector<int> vec2 = vec1;
vec2[0] = 7;
std::cout << vec1[0] << "\n";
std::cout << vec2[0] << "\n";
return 0;
}
Расскажите, каким будет результат выполнения кода:
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec1 = {4, 5, 6};
std::vector<int>& vec2 = vec1;
vec1[0]++;
std::cout << vec1[0] << "\n";
std::cout << vec2[0] << "\n";
return 0;
}
Расскажите, каким будет результат выполнения кода:
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec1 = {2, 3};
std::vector<int>& vec2 = vec1;
vec1[0]++;
vec2[0]++;
std::cout << vec1[0] << "\n";
std::cout << vec2[0] << "\n";
return 0;
}