LINUX.ORG.RU

История изменений

Исправление rumgot, (текущая версия) :

#include <iostream>
#include <vector>
#include <string>
#include <memory>


using namespace std;

int main()
{
    std::string someString = "Some string";

    const std::shared_ptr<std::vector<unsigned char>> veryStrangeData(
        new std::vector<unsigned char>(someString.data(),
                                       someString.data() + someString.size()));

    const std::shared_ptr<std::vector<unsigned char>>& veryStrangeDataReference =
        veryStrangeData;

    for (auto s : *veryStrangeDataReference.get()) {
        std::cout << s << std::endl;
    }
}

Хотя эта конечно ссылка на std::shared_ptr - это сильно.

Исправление rumgot, :

#include <iostream>
#include <vector>
#include <string>
#include <memory>


using namespace std;

int main()
{
    std::string someString = "Some string";

    const std::shared_ptr<std::vector<unsigned char>> veryStrangeData(
        new std::vector<unsigned char>(someString.data(),
                                       someString.data() + someString.size()));

    const std::shared_ptr<std::vector<unsigned char>>& veryStrangeDataReference =
        veryStrangeData;

    for (auto s : *veryStrangeDataReference.get()) {
        std::cout << s << std::endl;
    }
}

Хотя эта конечно ссылка на std::shared_ptr - это сильно..

Исправление rumgot, :

#include <iostream>
#include <vector>
#include <string>
#include <memory>


using namespace std;

int main()
{
    std::string someString = "Some string";

    const std::shared_ptr<std::vector<unsigned char>> veryStrangeData(
        new std::vector<unsigned char>(someString.data(),
                                       someString.data() + someString.size()));

    const std::shared_ptr<std::vector<unsigned char>>& veryStrangeDataReference =
        veryStrangeData;

    for (auto s : *veryStrangeDataReference.get()) {
        std::cout << s << std::endl;
    }
}

Исходная версия rumgot, :

#include <iostream>
#include <vector>
#include <string>
#include <memory>


using namespace std;

int main()
{
    std::string someString = "Some string";
    
    const std::shared_ptr<std::vector<unsigned char>> veryStrangeData(
        new std::vector<unsigned char>(someString.data(),
                                       someString.data() + someString.size()));
    
    const std::shared_ptr<std::vector<unsigned char>>& veryStrangeDataReference = veryStrangeData;

    someString.erase();

    for (auto s : *veryStrangeDataReference.get()) {
        std::cout << s << std::endl;
    }
}