Назовите функцию членства на каждом элементе в контейнере

Вы пытались написать свои методы вне класса, но внутри пространства имен.
Это недопустимо!

Вот некоторые из проблем, с комментарием, пожалуйста, будьте более точными, чтобы определить ровно одну закрывающую скобку для каждой открывающей скобки: [ 117]

// [...]

        } while (temp != 0);
    }
} // <== this one closes the class, you should move it after all methods!

public void add_soda()
{

// [...]

    Console.WriteLine("Tryck för att återgå till menyn...");
}

} // <== this one closes the namespace, you should move it after the whole code!

public void print_crate()
{

// [...]


Также обратите внимание, что вам нужен using sodacrate; для создания нового объекта Sodacrate в вашем классе Программы!

8
задан kyku 5 April 2009 в 19:06
поделиться

4 ответа

Я узнал, что повышение связывает, кажется, хорошо подходит для задачи, плюс Вы может передать дополнительные аргументы методу:

#include <iostream>
#include <functional>
#include <boost/bind.hpp>
#include <vector>
#include <algorithm>

struct Foo {
    Foo(int value) : value_(value) {
    }

    void func(int value) {
        std::cout << "member = " << value_ << " argument = " << value << std::endl;
    }

private:
    int value_;
};

int main() {
    std::vector<Foo> foo_vector;

    for (int i = 0; i < 5; i++)
        foo_vector.push_back(Foo(i));

    std::for_each(foo_vector.begin(), foo_vector.end(),
        boost::bind(&Foo::func, _1, 1));
}
4
ответ дан 5 December 2019 в 05:19
поделиться
 #include <algorithm>  // for_each
 #include <functional> // bind

 // ...

 std::for_each(container.begin(), container.end(), 
                   std::bind(&Type::func));

Посмотрите std::for_each и std::bind документация для деталей.

Пропущенный Ваше редактирование: Так или иначе вот другой способ достигнуть того, что Вы хотите, не используя Повышение, если когда-нибудь должны будьте быть:

std::for_each(foo_vector.begin(), foo_vector.end(),
    std::bind(&Foo::func, std::placeholders::_1));
23
ответ дан 5 December 2019 в 05:19
поделиться

Можно использовать станд.:: for_each или конструкции foreach повышения.

Используйте BOOST_FOREACH или BOOST_REVERSE_FOREACH повышения, когда Вы не захотите перемещать логику в другую функцию.

5
ответ дан 5 December 2019 в 05:19
поделиться

Если Вы на самом деле хотите улучшить производительность, а не просто довольно Ваш код, в чем Вы действительно нуждаетесь, функция карты. Eric Sink записал реализацию .NET

0
ответ дан 5 December 2019 в 05:19
поделиться
Другие вопросы по тегам:

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