2014-03-24 7 views
0

컨테이너 목록을 배우고 있습니다. 그리고 (인덱스에 요소), 삽입 (인덱스에 대한 요소) 바꾸려면 함수를 작성하고 그들을 삭제하는 방법을 알고 싶습니다. 나는 비디오를보고 기사를 읽은 지 이틀 만에 이것을 배우고 있지만이 코드를 작성하는 방법을 모르겠습니다. 목록 작업과 포인터의 관계를 알고 있습니다. 컨테이너 목록으로 함수를 구현하는 방법

내가 (그냥 시작이다) 상상하는 방법이다

void replace(list<Contact> &listOf, int index, const Contact &information) { 

    for(list<int>::iterator it = listOf.begin(); it != listOf.end(); it++){ 

    } 
} 

for 루프가 바로 writen 경우 나도 몰라,하지만 난이 목록을 통해 갈 것을 상상하고 인덱스를 발견하면 어떤 그것은 juse를 덮어 쓰기로 바꾸려고합니다.

기능 삽입에는 동일한 매개 변수가 있다고 생각합니다.

그리고이 방법을 상상해 보았습니다.하지만 삭제 방법은 확실하지 않습니다.

Contact delete(list<Contact> &listOf, int index) { 

} 

나는 프로그램의 시작 부분에 이름과 성 모두와 함께 연락처의 strutcture를 만들었습니다.

답변

1

루프는

for (list<Contact>::iterator it = listOf.begin(); it != listOf.end(); ++it) { 
    do what you wan't with *it. 
} 
1

리스트 그래서, 랜덤 액세스가없는 같은 조작에 적합하지 작성한다. 당신이 주장하는 경우, 여기에 루프를 직접 작성하지 않도록하는 방법은 다음과 같습니다 랜덤 액세스 작업

void replace(list<Contact> &listOf, int index, const Contact &information) { 
    list<int>::iterator it = listOf.begin(); 
    std::advance(it, index); 
    *it = information; 
} 

사용 std::vector. 컨테이너 중간에 삽입 또는 삭제와 같은 수정을하려면 std::list을 사용하십시오.

+0

목록을 사용하여 적절한 조작 방법을 보여 주실 수 있습니까? 당신이 전체 코드를 어떻게 대체 할 수 있는지 알려 주시면 기쁘게 생각합니다. 그것이 가능하다면? 나는 진짜로 그 기능을하는 방법을 알고 싶다. 감사합니다 – user3127680

+0

[std :: list reference] (http://en.cppreference.com/w/cpp/container/list)를보십시오. 리스트는 다른 컨테이너와 비교할 때 특히 좋습니다. 삽입, 지우기, 병합 또는 스플 라이스를 사용하여 목록 내의 요소를 가리키는 반복자가 있다고 가정합니다. 인덱스 만 가지고 있다면, 위와 같이 iterator를 얻기 위해'std :: advance'를 사용할 수 있고,리스트의 메소드 중 하나를 적용 할 수 있습니다. 그러나 이것은 매우 비효율적이라는 것을 명심하십시오. 대개이 경우 벡터를 사용하는 것이 더 좋을 것입니다. 해당 방법이 목록만큼 효율적이지 않더라도 마찬가지입니다. – iavr

관련 문제