Как вы можете отсортировать константный вектор? - PullRequest
0 голосов
/ 21 октября 2011

Если у меня в классе определен вектор констант, как мне его отсортировать?

Попытка сортировки константного вектора приведет к ошибкам, поскольку я изменяю содержимое константного вектора.

Ответы [ 2 ]

4 голосов
/ 21 октября 2011

Ты не.Если вам нужно изменить это ... ну, тогда это не должно быть const.Эти две цели находятся в прямом противоречии друг с другом.

Вместо того, чтобы просить решение проблемы, которая не имеет смысла, расскажите нам, чего вы на самом деле пытаетесь достичь здесь.Вы пытаетесь вернуть вектор из метода, который вы не хотите, чтобы caller мог изменить?В этом случае создайте метод получения и верните const vector&

#include <vector>

class Foo
{
public:
    // clients can't change this vector directly
    const std::vector<int>& get_vector() const { return _vec; }

    // you can still create an interface that allows 
    // mutation of the vector in a safe way, or mutate
    // the vector internally.
    void push_back( int i ) { _vec.push_back( i ); }
private:
    std::vector<int> _vec;
}
2 голосов
/ 21 октября 2011

Является ли вектор постоянным?Или данные внутри него, которые должны быть константными?

Если у вас есть константный вектор, то, вероятно, есть причина, по которой он не должен изменяться ....

При этом.Вот псевдокод о том, как можно выстрелить себе в ногу:

const std::vector< Foo* > v;  // hypothetical declaration
std::vector< Foo* >* vPtr = const_cast< std::vector< Foo* >* >(&v);
// GOOD LUCK
(*vPtr)[0] = new Foo(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...