"거의 같은"부분으로 벡터를 분할하고 해당 부분에 대한 하위 벡터를 만듭니다.하나의 요소가 적은 벡터 생성자
나는 여기에 원래 질문을했다 : How to split a vector into n "almost equal" parts하지만 난 정말 좋은 해결책을 발견, 내가 사용 여기에서 시도하고있는 무슨 : Best way to extract a subvector from a vector?
내가 시작과 끝 값의 정수를 만들기 위해이 기능을 썼다 (라운드 .) 지정된 자리로 반올림 내 기능입니다
void split(double number, double parts)
{
double loop = number/parts;
for(int i = 0; i < parts; i++)
{
int start = round(i * loop, 0);
int end = round((i + 1) * loop - 1, 0);
cout << start << " " << end << endl;
}
}
이 기능은 지금까지 확인을 작동하지만, 내 문제가 있음을 나는이 실행하려고하면
vector<some> dest(&source[start], &source[end]);
을
그런 다음 하나의 LESS 요소를 생성 한 다음 필요합니다. 그때가 99 개 요소가됩니다
vector<some> dest(&source[0], &source[99]);
로 전화하면 내가 대신의 100 왜 이런 일이, 예를 들면 의미?
어떻게 해결할 수 있습니까? [end + 1]을 사용하면 마지막 벡터에서 "subscript out of range"로 끝납니다.
좋습니다. 그래서 제 기능을 위해 적절한 호출이 이것입니까? 벡터 dest (source.begin() + start, source.begin() + end + 1); –
zsero
'end'가 원하는 마지막 요소의 인덱스라고 가정하면, 맞습니다. 그러나 일반적으로 C++ 컨테이너와 관련해서는 'last'라는 이름이 실제 마지막 요소가 아니라 한 끝을 가리키는 데 사용되므로 'last'와 같은 이름으로 바꿀 수 있습니다. – templatetypedef
감사! 그 'last'라고하는 지금 – zsero