Устанавливание всех значений в станд.:: карта

Код выхода 127 из команд оболочки означает «команда не найдена». Является ли .bashrc исполняемым? Обычно это не так, , вероятно, вы хотите его получить?

source ./home/$USERNAME/.bashrc

strike>

Как указал Дэн Фаррел В своем комментарии поиск файла в команде RUN будет действовать только внутри этой оболочки.

Источник .bashrc во время сборки

Если вы хотите, чтобы он имел эффект для более поздних команд в сборке, вам нужно запустить их все в одном выражении RUN. В приведенном ниже .bashrc источник в той же оболочке, что и catkin_make запускается.

RUN . /home/ros/.bashrc && \ 
    cd /home/$USERNAME/catkin_ws && \
    catkin_make

Для получения файла .bashrc при запуске контейнера

Что должно произойти, когда контейнер запускается с помощью docker run, указывается с помощью оператора ENTRYPOINT. Если вы просто хотите простую подсказку bash, укажите /bin/bash. Оболочка будет запускаться с пользователем, указанным в операторе USER.

Итак, если вы добавите следующее в конец вашего Dockerfile

USER ros
ENTRYPOINT /bin/bash

Когда кто-то запускает контейнер, используя docker run -it , он попадает в оболочку bash как пользователь ros. Bash автоматически создаст файл /home/ros/.bashrc, и все определения внутри будут доступны в оболочке. (Ваш оператор RUN, содержащий файл .bashrc, может быть удален

6
задан Ajeet Ganga 25 July 2017 в 02:46
поделиться

2 ответа

C++ имеет fill метод от <algorithm> но это не работает на карты. На самом деле поддержка алгоритма ассоциативных контейнеров обычно не хороша.

В результате необходимо будет использовать взаимодействие или записать соответствующий функтор, который будет использоваться с for_each (но я полагаю, что это ненужное служебный):

template <typename TKey, typename TValue>
struct resetter : public std::unary_function<std::pair<TKey, TValue> > {
    TValue const value;

    public resetter(value const& v) : value(v) { }

    public void operator ()(std::pair<TKey, TValue>& v) {
        v.second = value;
    }
};

for_each(map.begin(), map.end(), resetter<Key, Value>(value));
13
ответ дан 8 December 2019 в 13:03
поделиться

Повышение:: присвойтесь библиотека имеет все виды аккуратного материала для выручения инициализации содержания контейнера. Моя мысль, что это могло использоваться, чтобы не явно выполнять итерации через карту. К сожалению, карты являются любопытными зверями, трудными инициализировать, потому что ключи должны быть уникальными. Нижняя строка - то, что простым для цикла является, вероятно, лучший способ инициализировать карту. Это не может быть супер изящно, но это сделало задание и immediatly понятный любым с любым знакомством с STL.

map <int,string> myMap;
for( int k=0;k<1000;k++)
  myMap.insert(pair<int,string>(k,string("")));

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

Повышение:: присвойтесь делает простым присвоить небольшое количество значений карте.

map<string,int> m; 
insert( m )( "Bar", 1 )( "Foo", 2 );

или

 map<int,int> next = map_list_of(1,2)(2,3)(3,4)(4,5)(5,6);

В Вашем случае, где Вы хотите инициализировать всю карту с тем же значением, существует повторение утилит и repeat_fun.
Что-то вроде этого должно работать с мультикартой (непротестированный фрагмент кода)

pair<int,string> init( 0,string(""));
multimap <int,string> myMap = repeat(1000,init);

Как Konrad Rudolph, как указано, Вы не можете инициализировать карту с тем же точным значением, потому что ключи должны быть уникальными.

Это делает жизнь намного более сложной (забава?). Что-то вроде этого, возможно:

map <int,string> myMap;

struct nextkey
{
   int start;
   nextkey( s ) : start( s ) {}
   pair<int,string> operator () ()
{
   return pair<int,string>(start++,string(""));
}
};

myMap = repeat_fun(1000,nextkey(0));

Теперь, это становится настолько сложным, я теперь думаю, что простое повторение ЯВЛЯЕТСЯ способом пойти

map <int,string> myMap;
for( int k=0;k<1000;k++)
  myMap.insert(pair<int,string>(k,string("")));
2
ответ дан 8 December 2019 в 13:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: