C ++ STL Vectors : 인덱스에서 반복자를 가져 옵니까?
그래서 index []로 stl 벡터의 요소에 액세스하는 많은 코드를 작성했지만 이제는 벡터 덩어리를 복사해야합니다. 것 같습니다 vector.insert(pos, first, last)
난 단지 제의 int로서 마지막이 제외 ... 내가 원하는 기능입니다. 이 값에 대한 반복자를 얻을 수있는 좋은 방법이 있습니까?
이 시도:
vector<Type>::iterator nth = v.begin() + index;
@dirkgently에 의해 언급 된 방법 ( v.begin() + index )
은 벡터 에 좋고 훌륭합니다.
그러나 가장 일반적인 방법과 무작위 액세스 반복자도 일정한 시간 동안 작동합니다.std::advance
( v.begin(), index )
사용법의 차이점 편집 :
std::vector<>::iterator it = ( v.begin() + index );
또는
std::vector<>::iterator it = v.begin();
std::advance( it, index );
@litb 메모 뒤에 추가되었습니다.
또한; auto it = std::next(v.begin(), index);
업데이트 : C ++ 11x 호환 컴파일러 필요
아니면 사용할 수 있습니다 std::advance
vector<int>::iterator i = L.begin();
advance(i, 2);
실제로 std :: vector는 필요할 때 C 탭으로 사용됩니다. (C ++ 표준 은 Wikipedia에서 배열을 대체하는 것으로 알고있는 한 벡터 구현을 요구합니다 .)
int main()
{
void foo(const char *);
sdt::vector<char> vec;
vec.push_back('h');
vec.push_back('e');
vec.push_back('l');
vec.push_back('l');
vec.push_back('o');
vec.push_back('/0');
foo(&vec[0]);
}
물론, foo는 매개 변수로 전달 된 주소를 복사하여 어딘가에 저장하지 않아야합니다. 또는 프로그램에서 vec에 새 항목을 넣지 않거나 용량 변경을 요청하지 않아야합니다. 또는 위험 세분화 오류 ...
따라서 당신의 예에서 그것은
vector.insert(pos, &vec[first_index], &vec[last_index]);
참고 URL : https://stackoverflow.com/questions/671423/c-stl-vectors-get-iterator-from-index
'development' 카테고리의 다른 글
파이썬을 사용하여 RESTful API에 요청하기 (0) | 2020.05.13 |
---|---|
다음 명령을 시작하기 전에 PowerShell에 각 명령이 끝날 때까지 기다리는 방법은 무엇입니까? (0) | 2020.05.13 |
이미지를 늘려서 채울 수있는 방법 (0) | 2020.05.13 |
SQL Server에서 실행되는 쿼리 나열각 데이터 포인트에서 다른 텍스트가있는 matplotlib 산점도 (0) | 2020.05.13 |
커밋하기 전에 svn에 파일을“추가” (0) | 2020.05.13 |