개인 변수가 있습니다 std::vector<some struct>
어떻게 든 반환 값을 함수에 전달할 수 있지만 "쓰기"권한이 없으므로 새 요소를 추가하면 요소를 수정할 수 없게됩니다 (예 : const std::vector<some const struct>*
). 어떻게 할 수 있습니까? 유일한 아이디어는 기존 요소에 대한 상수 포인터를 사용하여 새 벡터를 만드는 것입니다. ?Std :: Vector <struct> to const std :: vector <const struct> *
답변
당신은 const
벡터에 대한 포인터 또는 참조를 통해 벡터의 요소를 수정할 수 없습니다 다음은 안전 할 것입니다 그래서 :.
const std::vector<some_type>* get_pstuff() const { return &the_vector; }
const std::vector<some_type>& get_rstuff() const { return the_vector; }
한편
, 시작과 끝 벡터의에 const_iterators 반환하는 것이 더 관용적 수 있습니다 :
std::vector<some_type>::const_iterator cbegin() const { return the_vector.cbegin(); }
std::vector<some_type>::const_iterator cend() const { return the_vector.cend(); }
벡터에서 추가하거나 제거 할 수는 없지만 각'some_type' 객체의 인스턴스를 수정할 수는 있습니다. – Lochemage
@Lochemage 아니, 할 수 없다. – juanchopanza
죄송합니다.'some_type'을 객체에 대한 포인터로 오해했습니다.이 경우에는 올바른 것입니다. – Lochemage
- 1. 'std :: vector <std :: basic_string <char>> *'에서 'const std :: vector <std :: basic_string <char>'& '
- 2. 어떻게 const std :: vector <Object * const>를 반환할까요?
- 3. itdate std :: vector <std :: vector <char>>?
- 4. std :: vector <const char*>을 void로 복사하는 방법 *?
- 5. const 및 non const 요소가 혼합 된 std :: vector 시뮬레이션
- 6. std :: vector <std :: reference_wrapper >
- 7. std :: vector <std::string> 충돌
- 8. std :: vector로 변환하는 방법이 있습니까 <const T*> std :: vector <T*> 추가 할당없이?
- 9. std :: std :: string과 std :: vector 사이의 이동
- 10. std :: vector <std :: pair <T,U>>
- 11. std :: unique() 사용하여 std :: vector <std :: unordered_set >
- 12. std :: sort on std :: vector <std::string>
- 13. const std :: map <boost :: tuples :: tuple, std :: string>?
- 14. 타입 'std :: vector <Object*> &'
- 15. std :: vector "cast"하는 방법 <char> std :: vector <wchar_t>
- 16. std :: vector <std :: vector <float>>을 float으로 변환 **
- 17. std :: list와 std :: vector 중 하나를 선택하십시오.
- 18. std :: vector vs std :: insert
- 19. std :: vector after std :: bad_alloc
- 20. 클래스에서 std :: Vector 멤버 내보내기
- 21. std :: vector 요소의 참조 참조
- 22. std :: vector optimization required
- 23. std :: vector <std :: pair <int, std :: pair <Bone, std :: string>> int로 정렬하지 않습니까?
- 24. C++ std : 벡터 < T* const>
- 25. 변환하는 방법 Rcpp :: List to std :: vector <double>
- 26. std :: vector <double> shrink to fit?
- 27. NSData * to std :: vector <부호없는 char> 복사하지 않고
- 28. 왜 std :: vector <char>은 std :: string보다 빠릅니까?
- 29. C++ std :: vector <std::string> 반복자 segfaults
- 30. `std :: vector <std :: uint8_t>의 빠른 복사본
그냥'반환 및 the_vector을,'? 두 개의'const_iterators'를 반환하는 것이 더 관용적 일지 모르지만. – juanchopanza
@juanchopanza 그 경우, u는 해당 벡터의 모든 요소를 수정할 수 있습니다 – Quest
정말요? 어떻게 그럴 수 있니? – juanchopanza