[問題] 用指標指向vector的element?
我想讓"指標""一直"指向某個vector的元素,
請問有無可能。
事實上這在VC是不行的。
我知道vector可能發生reallocate memory的情形。
所以就算某個指標某個時候指向vector的一個element,
一旦有reallocate的情形(如某次push_back),
就不再保證指向同一個element。例如以下code在VC會出現執行時期錯誤:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#include<iostream>
#include<vector>
int main()
{
vector<int> v;
v.push_back(0);
int *p = &(*(v.begin()));
v.push_back(1);
cout<<*p; // error!
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#include<iostream>
#include<vector>
int main()
{
vector<int> v;
v.push_back(0);
vector<int>::iterator p = v.begin();
v.push_back(1);
cout<<*p; // error!
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
甚至不用指標,改用iterator,也一樣會出問題。
所以請問除了指標、iterator,難道只剩index可以一直指向vector同一個element嗎?
index的用法如:
int p = 0;
cout<<v[p];
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.221.79
→
05/01 19:32, , 1F
05/01 19:32, 1F
→
05/01 19:33, , 2F
05/01 19:33, 2F
→
05/01 19:34, , 3F
05/01 19:34, 3F
→
05/01 21:13, , 4F
05/01 21:13, 4F
→
05/01 21:14, , 5F
05/01 21:14, 5F
→
05/01 21:16, , 6F
05/01 21:16, 6F
→
05/01 21:16, , 7F
05/01 21:16, 7F
→
05/01 21:17, , 8F
05/01 21:17, 8F
→
05/01 21:57, , 9F
05/01 21:57, 9F
→
05/01 22:18, , 10F
05/01 22:18, 10F
→
05/01 22:18, , 11F
05/01 22:18, 11F
→
05/01 22:19, , 12F
05/01 22:19, 12F
→
05/01 22:22, , 13F
05/01 22:22, 13F
※ 編輯: zxvc 來自: 218.168.4.191 (05/01 22:31)
→
05/01 23:55, , 14F
05/01 23:55, 14F
→
05/01 23:56, , 15F
05/01 23:56, 15F
→
05/01 23:56, , 16F
05/01 23:56, 16F
→
05/01 23:57, , 17F
05/01 23:57, 17F
→
05/02 00:03, , 18F
05/02 00:03, 18F
→
05/02 08:04, , 19F
05/02 08:04, 19F
推
05/02 11:17, , 20F
05/02 11:17, 20F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 3 篇):