Нуждаюсь в помощи понимая использующий карту C++ в качестве ассоциативного массива

Второй Buildbot - интеграция Trac. Можно найти больше информации об интеграции на веб-сайт Buildbot . В моем предыдущем задании мы записали и использовали плагин, который они упоминают (tracbb). То, что делает плагин, переписывает все URL Buildbot, таким образом, можно использовать Buildbot из Trac. ( http://example.com/tracbb ).

действительно хорошая вещь о Buildbot состоит в том, что конфигурация записана в Python. Можно интегрировать собственный код Python непосредственно к конфигурации. Также очень легко записать Ваш собственный BuildSteps для выполнения определенных задач.

Мы использовали BuildSteps, чтобы получить источник от SVN, вытянуть зависимости, опубликовать результаты испытаний к WebDAV, и так далее.

я записал интерфейс X10, таким образом, мы могли отправить сигналы с результатами сборки. Когда сборка перестала работать, мы включили красную лампу лавы. Когда сборка успешно выполнилась, зеленая лампа лавы включается. Хорошие времена:-)

6
задан Community 23 May 2017 в 12:01
поделиться

4 ответа

Если вы читаете спецификацию std :: map, в ней говорится, что operator [] эквивалентен (в данном случае)

(*((this->insert(make_pair(1,C()))).first)).second

. Это объясняет все вызовы конструкторов, которые вы видите. Сначала он вызывает конструктор по умолчанию C (). Затем он вызывает make_pair, который копирует объект C. Затем он вызывает insert, который создает копию только что созданного парного объекта, снова вызывая конструктор копирования C. Наконец, он вызывает оператор присваивания, чтобы установить для вставленного объекта тот, которому вы его назначаете.

8
ответ дан 10 December 2019 в 00:39
поделиться

Не знаю. Но это интересно:

#include <string>
#include <map>
#include <iostream>
using namespace std;

class C
{
    public:
        string s;
        C()
        {
            cout << "default " << endl;
        }
        C(const string& p)
        : s(p)
        {
            cout << "one param(" << s << ")" << endl;
        }
        C(const C& obj)
            :s(obj.s)
        {
           cout << "copy constr(" << s << ")" <<endl;
        }
        C& operator  = (const C& obj)
        {
            cout << "copy initializer\t" <<;

            C copy(obj);
            std::swap(s,copy.s);

            return *this;
        }
};

int main()
{
    map<int,C> map1;
    cout << "Inserting using index" << endl;
    map1[1] = C("Plop");
}

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

Inserting using index
default
copy constr()
copy constr()
one param(Plop)
copy initializer      copy constr(Plop)
2
ответ дан 10 December 2019 в 00:39
поделиться

Фактически map1 [1] = obj сначала создаст пару

0
ответ дан 10 December 2019 в 00:39
поделиться

Что произойдет, если вы просто выполните map [1]; ? Это может включать внутренние копии, в зависимости от реализации map , которую использует ваша стандартная библиотека.

0
ответ дан 10 December 2019 в 00:39
поделиться
Другие вопросы по тегам:

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