배열 벡터로 작업하는 올바른 방법
누군가 배열 벡터로 작업하는 올바른 방법이 무엇인지 말할 수 있습니까?
배열 벡터 ( vector<float[4]>
)를 선언 했지만 error: conversion from 'int' to non-scalar type 'float [4]' requested
시도 할 때 얻었 resize
습니다. 무엇이 잘못 되었나요?
하나 vector
또는 다른 컨테이너에 배열을 저장할 수 없습니다 . 컨테이너에 저장할 요소의 유형 (컨테이너의 값 유형 이라고 함 )은 복사 구성 및 할당 가능해야합니다. 배열도 마찬가지입니다.
그러나 array
Boost, TR1 및 C ++ 0x에서 제공하는 것과 같은 클래스 템플릿을 사용할 수 있습니다 .
std::vector<std::array<double, 4> >
(당신은 대체 할 수 있습니다 std::array
와 std::tr1::array
C ++ TR1에 포함 된 템플릿을 사용하거나 boost::array
사용 부스트 라이브러리에서 템플릿을 다른 방법으로, 당신은 당신의 자신의 쓸 수 있습니다. 그것은 아주 간단합니다.)
사용하다:
vector<vector<float>> vecArray; //both dimensions are open!
다음 코드에는 오류가 없습니다.
float arr[4];
arr[0] = 6.28;
arr[1] = 2.50;
arr[2] = 9.73;
arr[3] = 4.364;
std::vector<float*> vec = std::vector<float*>();
vec.push_back(arr);
float* ptr = vec.front();
for (int i = 0; i < 3; i++)
printf("%g\n", ptr[i]);
출력은 :
6.28
2.5
9.73
4.364
결론적으로:
std::vector<double*>
다른 가능성은
std::vector<std::array<double, 4>>
James McNellis가 제안한 것입니다.
벡터의 모든 요소는 float[4]
이므로 크기를 조정할 때 모든 요소는 기본적으로 float[4]
. 나는 당신이 int
같은 값 으로 초기화하려고 0
했습니까?
시험:
static float zeros[4] = {0.0, 0.0, 0.0, 0.0};
myvector.resize(newsize, zeros);
참조 URL : https://stackoverflow.com/questions/4612273/correct-way-to-work-with-vector-of-arrays
'Programing' 카테고리의 다른 글
자바 스크립트지도에 동적으로 데이터 추가 (0) | 2020.12.29 |
---|---|
: after and : before css pseudo elements hack for IE 7 (0) | 2020.12.29 |
Python의 MATLAB 스타일 find () 함수 (0) | 2020.12.29 |
주소에서 위도 및 경도로의 Javascript 지오 코딩이 작동하지 않음 (0) | 2020.12.29 |
Subclipse 및 JavaHL 설치 문제 (0) | 2020.12.29 |