2015-06-11 6 views
-3

Я пытаюсь отделить все значения, хранящиеся в векторе, на два разных вектора. Но когда я печатаю значение любого из векторов, он бросает seg-ошибку.Ошибка сегментации с использованием Vector C++

Ниже приведен образец кода.

std::vector<int> V,Vx,Vy; 

     for (int i = 0; i < k; ++i) 
     { 
      cin>>x; 
      V.push_back(x); 
     } 
     for(int i=0;i<m-1;i=i+2) 
     { 
      Vx.push_back(V[i]); 
     } 
     for(int i=1;i<m-1;i=i+2) 
     { 
      Vy.push_back(V[i]); 
     } 
     for(int i=0;i<m-1;i=i+2) 
      cout<<Vx[i]<<endl; 

Где я делаю неправильно? к = 12, т = 6

+2

Каково значение k и m. m-1 может быть больше k, вызвав ошибку сегментации –

+0

Что вы делаете неправильно? ТАК. –

+0

Отлажено, помогло бы. – DumbCoder

ответ

1

Проблема с

for(int i=0;i<m-1;i=i+2) 
     cout<<Vx[i]<<endl; 

является то, что вы обращаетесь к элементам Vx, используя из индексов границ.

Хорошо использовать методы программирования, которые приводят к меньшему количеству ошибок кода.

Если вы можете использовать компилятор C++ 11, используйте диапазон для цикла для доступа к элементам контейнеров.

for (auto i : Vx) 
    cout << i << endl; 

Если вы ограничены использованием компилятора C++ 03, используйте итераторы.

for (std::vector<int>::iterator iter = Vx.begin(), iter != Vx.end(); ++iter) 
    cout << *iter << endl; 
Смежные вопросы