Глобальная переменная не обновляется, если задана в качестве аргумента функции - PullRequest
0 голосов
/ 19 февраля 2020

Я объявляю глобальную переменную, first_clauses:

vector<vector<int>> first_clauses; //clauses for first iteartion

Теперь cnf_transformation является одной из функций программы:

    void cnf_transformation(vector<vector<string>> gates, vector<vector<int>> first_clauses)
    {
        for (int i = 0; i < gates.size(); i++)
        {
            if (gates[i][1] == "AND" || gates[i][1] == "and")
            {
                vector<int> cl;
                cl.push_back(-1 * umap_toInt[gates[i][2] + "_a_1"]);
                cl.push_back(-1 * umap_toInt[gates[i][3] + "_a_1"]);
                cl.push_back(umap_toInt[gates[i][0] + "_a_1"]);
                first_clauses.push_back(cl);
                cl.clear();
                cl.push_back(umap_toInt[gates[i][2] + "_a_1"]);
                cl.push_back(-1 * umap_toInt[gates[i][0] + "_a_1"]);
                first_clauses.push_back(cl);
                cl.clear();
//many more lines are there
}

Я хочу sh некоторые обязательные данные в глобальной переменной first_clauses. Итак, я звоню cnf_transformation и мой второй аргумент - first_clauses:

cnf_transformation(gates, first_clauses);

Теперь, когда я печатаю структуру данных first_clauses внутри моей функции, она на самом деле хранит данные, но после прихода вне функции моя глобальная переменная first_clauses не обновляется. Я все еще изучаю C ++. Пожалуйста, ведите меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...