如果我有一个指向向量中的元素的指针,比如元素2,那么该元素将与相同向量的元素4交换。指针现在指向元素2,元素4,还是两者都没有?例如:
向量a等于[1,2,3,4,5]
创建指向元素2的指针,在这种情况下等于3
交换元素2和4
矢量a现在是[1,2,5,4,3]
指向哪个向量?
答案 0 :(得分:8)
你的意思是,“指针指向哪里?”。如果是这种情况,它将指向内存中与之前相同的位置,现在由值5
占用。
此外,通过交换,我假设您的意思是在两个位置之间交换值。
只是因为你的指针指向一个内存位置。存储的内容无关紧要 - 它可能是一个值,也可能是垃圾。当您取消引用它(查看值是什么)时,它将返回存储在该位置的值。
由于您已交换了值,因此该位置的值为5
而非3
因此,指针仍指向同一位置且未更改但该位置的值已更改。
// Create the vector
int a[] = {1,2,3,4,5};
int* ptr = &a[2];
// Display original status
std::cout<<"Original Value: "<<*ptr<<std::endl;
std::cout<<"Address: "<<ptr<<std::endl;
// Swap values
std::swap(a[2],a[4]);
// Check
std::cout<<"New Value: "<<*ptr<<std::endl;
std::cout<<"Address: "<<ptr<<std::endl;
我在示例中使用了一个整数数组,但是如果用向量表示std::vector
,则假设没有重新分配,则保持不变(请查看this SO answer)。