2017-12-25 57 views
-2
for (i=1; i<=10; i++) myvector.push_back(i); 

    // erase the 6th element 
    myvector.erase (myvector.begin()+5); 

    // erase the first 3 elements: 
    myvector.erase (myvector.begin(),myvector.begin()+3); 

    cout << "myvector contains:"; 
    for (i=0; i<myvector.size(); ++i) 

내가 i = 0 후에 요소를 저장할 수 있도록 지우는 기능을 조작 할 수있는 방법이 있습니까? 기본적으로 1 인덱싱을 유지하려고합니다.)/*이 코드는 요소를 1 인덱싱에 저장했지만 요소를 0 인덱싱으로 저장합니다. 나는 지우기 기능을 조작한다고 생각해. */erase()를 사용한 후 벡터의 요소를 배열

+4

사용자는 * C++에서 배열 (벡터와 마찬가지로) 인덱싱은 0 기반입니까? 언어 자체의 의미를 변경해야하는 이유는 무엇입니까? 1 기반 인덱싱을 사용하여 해결하고자하는 * 실제 * 문제는 무엇입니까? –

+0

"색인 생성"이라는 용어는 오해의 소지가 있습니다. C/C++에서 "인덱스"는 일반적으로 * 오프셋 *이므로 0부터 시작합니다. – VTT

+0

기본적으로 요소를 저장하려고합니다. 1에서 10까지의 배열과 인덱스는 동일해야합니다. 하지만 지우기 기능을 사용하면 요소의 색인 생성이 0 색인으로 변경됩니다. 그래서 내가 사용할 수있는 방법이 있나요 지우기() 및 1 기반 인덱싱도 보존합니다. –

답변

0

for 루프를 사용하기 전에 하나의 색인으로 원하는 요소 뒤에 요소를 이동시킨 다음 마지막 요소를 지울 수 있다고 생각합니다. 예를 들어 요소 5를 지우려면 요소 5 = 요소 6과 요소 6 = 요소 7 ... 등을 수행 할 수 있습니다. 마지막 요소에 도달하고 요소 100 (마지막 요소) = 요소 99를 수행하면 99 및 100 위치에 요소 100의 사본이 두 개 있습니다. 100의 위치에있는 요소 100을 지 웁니다.

+0

그래, 난 항상 이런 식으로 할 수 있지만 지우기 기능을 사용하려면 내 시나리오에서 정말 중요합니다. –

+1

그래서 요소를 제거한 후 무엇을하고 싶습니까? – QuIcKmAtHs

+1

벡터와 그 내용을 1- 색인으로 옮길 계획입니까? – QuIcKmAtHs