반응형
C ++에서 벡터를 초기화하는 방법
배열의 경우처럼 벡터를 초기화하고 싶습니다.
예
int vv[2] = {12, 43};
하지만 이렇게하면
vector<int> v(2) = {34, 23};
또는
vector<int> v(2);
v = {0, 9};
오류가 발생합니다.
'{'토큰 이전의 기본 표현
과
오류 : ','또는 ';'예상 '='토큰 이전
각기.
새로운 C ++ 표준을 사용하면 (컴파일러에서 특수 플래그를 활성화해야 할 수도 있음) 간단하게 수행 할 수 있습니다.
std::vector<int> v { 34,23 };
// or
// std::vector<int> v = { 34,23 };
또는:
std::vector<int> v(2);
v = { 34,23 };
이 기능 (이니셜 라이저 목록)을 지원하지 않는 컴파일러에서는이를 배열로 에뮬레이션 할 수 있습니다.
int vv[2] = { 12,43 };
std::vector<int> v(&vv[0], &vv[0]+2);
또는 기존 벡터에 할당하는 경우 :
int vv[2] = { 12,43 };
v.assign(&vv[0], &vv[0]+2);
James Kanze가 제안한 것처럼 배열의 시작과 끝을 제공하는 함수를 갖는 것이 더 강력합니다.
template <typename T, size_t N>
T* begin(T(&arr)[N]) { return &arr[0]; }
template <typename T, size_t N>
T* end(T(&arr)[N]) { return &arr[0]+N; }
그런 다음 크기를 완전히 반복하지 않고도이 작업을 수행 할 수 있습니다.
int vv[] = { 12,43 };
std::vector<int> v(begin(vv), end(vv));
다음과 같이 할 수도 있습니다 :
template <typename T>
class make_vector {
public:
typedef make_vector<T> my_type;
my_type& operator<< (const T& val) {
data_.push_back(val);
return *this;
}
operator std::vector<T>() const {
return data_;
}
private:
std::vector<T> data_;
};
And use it like this:
std::vector<int> v = make_vector<int>() << 1 << 2 << 3;
참고URL : https://stackoverflow.com/questions/8906545/how-to-initialize-a-vector-in-c
반응형
'IT story' 카테고리의 다른 글
메모장 ++이 파일의 모든 단어에 대해 자동 완성을 표시하지 못하게하는 방법 (0) | 2020.05.13 |
---|---|
앱 자체에서 로캘 변경 (0) | 2020.05.13 |
CSS에서“! important”를 사용하면 어떤 의미가 있습니까? (0) | 2020.05.13 |
jQuery로 RSS 구문 분석 (0) | 2020.05.12 |
.append (), prepend (), .after () 및 .before () (0) | 2020.05.12 |