작은 자바 배경으로 C++을 배우려고합니다. 두 목록의 교차를 반환하는 코드를 작성하려고합니다. 저는 개념적으로 올바른 생각을 가지고 있다고 생각합니다. 그러나 컴파일하는 데 아무런 문제가 없으므로 구문에 문제가 있습니다. 내가 필요가 있다고 생각초보자 C++ : 반복자 구문으로 인덱스 구문 변환
#include <iostream>
using namespace std;
#include <list>
template <typename Object>
list<Object> intersection(const list<Object> & L1, const list<Object> & L2){
std::list<Object> result;
int pos1 = 0;
int pos2 = 0;
while (pos1 < L1.size() && pos2 < L2.size()) {
if (L1[pos1] > L1[pos2]) {
pos1++;
} else if (L2[pos2] > L1[pos1]) {
pos2++;
} else {
result.push_back(L2[pos2]);
pos1++;
pos2++;
}
}
return result;
}
것들 : 반복자 (내가 목록에 접근하고있어 방법이 올바르지 않습니다 확신)
나는 (더 잘하면) 더 설명하기 쉽도록 수정했으며, 이것은 비교적 일반적인 문제이며 향후 사용자에게 흥미로울 수 있음을 나타 내기 위해 수정되었습니다. 나는 이것이 좋기를 바란다. – jogojapan
C++의 초보자이기 때문에'std :: list' ...를 절대 사용해서는 안된다는 것을 언급 할 가치가 있습니다. (C++ 클래스에는 문제가 없기 때문에가 아니라 끔찍한 데이터 구조이기 때문에). 컨테이너가 필요할 때, 기본값은 '벡터'입니다. (따라서 코드가 반복자 대신 인덱스로 작업 할 수 있습니다) –
jalf
좋은 지적입니다. 'vector'는 대부분의 경우에 더 좋지만,'list'와'vectors'의 장점과 단점을 알고, 포인터/반복자에 관해 알아야 할 좋은 C++ 코드를 작성하고 싶다면 좋다고 생각합니다. – Ari