Programing

배열 벡터로 작업하는 올바른 방법

lottogame 2020. 12. 29. 06:43
반응형

배열 벡터로 작업하는 올바른 방법


누군가 배열 벡터로 작업하는 올바른 방법이 무엇인지 말할 수 있습니까?

배열 벡터 ( vector<float[4]>)를 선언 했지만 error: conversion from 'int' to non-scalar type 'float [4]' requested시도 할 때 얻었 resize습니다. 무엇이 잘못 되었나요?


하나 vector또는 다른 컨테이너에 배열을 저장할 수 없습니다 . 컨테이너에 저장할 요소의 유형 (컨테이너의 값 유형 이라고 함 )은 복사 구성 및 할당 가능해야합니다. 배열도 마찬가지입니다.

그러나 arrayBoost, TR1 및 C ++ 0x에서 제공하는 것과 같은 클래스 템플릿을 사용할 수 있습니다 .

std::vector<std::array<double, 4> >

(당신은 대체 할 수 있습니다 std::arraystd::tr1::arrayC ++ 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

반응형