여기에서 많은 부분을 검색했지만 저에게있어서 C++의 고급 초보자에게는 올바른 설명이 없습니다. 이전에 벡터의 구조체로 작업했는데 세그먼트 결함이 생겼습니다 ...C++ 구조체의 벡터를 초기화하는 올바른 방법
그와 같은 객체가 실제로 어떻게 작동하는지 그리고 내가 올바르게 수행하고 있는지를 알고 싶습니다. 나는 그것을 크기를 조정하고 값을 입력하기 전에
std::vector<numberOfSpecies> size;
:
나는
struct numberOfSpecies {
int predator;
int prey1;
int prey2;
};
같은 구조체과의 벡터를 가지고있다.
size.resize(100);
실제로이 작업은 무엇입니까? 구조체에 적합한가?
size[t].predator=0;
size[t].prey1=0;
size[t].prey2=0;
for(int k = 0; k < N; ++k){
size[t].predator++;
size[t].prey1++;
size[t].prey2++;
}
이 바로인가 :이 제로로 초기화처럼 이
지금 나는이 같은 일을 오전 ... 보인다? 가능한 문제는 어디에 있습니까? 그것을 더 잘하는 방법?
resize는 n 개의 구조체를 만듭니다. 그러나 디버그 모드를 사용하기 때문에 사고로 인해 초기화되지 않습니다. 당신이 그것을 사용하는 방법의 크기를 조정 한 후에 각 값이 임의의 정의되지 않은 값을 가지고 있다고 가정해야합니다. – Hayt
돕기 위해 OK : 가치 란 무엇인가 't'입니까? 세분화 오류는 어디에서 발생합니까? 좀 더 많은 코드를 추가 할 수 있습니까? 가급적이면 http://stackoverflow.com/help/mcve 길에서 – Hayt
@Hayt는 0시에 초기화가 확실한가요? 난 항상 크기를 개체의 생성자를 호출한다고 생각한다.이 경우, 모든 멤버를 0으로 설정하는 기본값이다. – Garf365