ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 低调看直播体育app软件下载 >> 其他编程jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 >> 实战c++中的vector系列--copy set to vector别混淆了reserve和resize

实战c++中的vector系列--copy set to vector别混淆了reserve和resize(2/3)

来源:网络整理     时间:2015-12-17     关键词:Iterator,迭代器

本篇文章主要介绍了"实战c++中的vector系列--copy set to vector别混淆了reserve和resize",主要涉及到Iterator,迭代器方面的内容,对于其他编程jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下: stl算法中有个copy函数,我们可以轻松的写出这样的代码:#include #include

#include#include#includeint main()
{
    std::set <double> input;
    input.insert(5);
    input.insert(6);

    std::vector <double> output(2);//指明大小std::copy(input.begin(), input.end(), output.begin());
    std::cout << output.size() << std::endl;
    return0;
}

方法二:使用back_inserter
back_inserter 是Iterator适配器,它使得元素被插入到作为实参的某种容器的尾部

#include#include#include#include<Iterator>int main()
{
    std::set <double> input;
    input.insert(5);
    input.insert(6);

    std::vector <double> output;
    std::copy(input.begin(), input.end(), std::back_inserter(output));
    std::cout << output.size() << std::endl;
    return0;
}

再继续vetor to vector:

#include#include#include#include<Iterator>
int main()
{
    std::vector<std::string> v, orig;
    orig.push_back("first");
    orig.push_back("second");    v = orig;
    v.insert(v.end(), v.begin(), v.end());
    // Now v contains: { "first", "second", "", "" }

    v = orig;std::copy(v.begin(), v.end(), std::back_inserter(v));    v = orig;
    v.reserve(v.size() * 2);
    v.insert(v.end(), v.begin(), v.end());
    // Now v contains: { "first", "second", "first", "second" }

    v = orig;
    v.reserve(v.size() * 2);std::copy(v.begin(), v.end(), std::back_inserter(v));
    // Now v contains: { "first", "second", "first", "second" }

    // GOOD (best):
    v = orig;
    v.insert(v.end(), orig.begin(), orig.end()); // note: we use different vectors here
                                                 // Now v contains: { "first", "second", "first", "second" }
    return 0;
}

再看这个:如果不resize,就会崩溃,把resize换成reserve也会崩溃,和解?

#include   #include   #include   usingnamespacestd;

int main()
{
    int myints[] = { 10, 20, 30, 40, 50, 60, 70 };
    vector<int> myvector;
    vector<int>::Iterator it;

    //myvector.resize(7);   // 为容器myvector分配空间 ,不resize会崩溃     copy(myints, myints + 7, myvector.begin());

    cout << "myvector contains: ";
    for (it = myvector.begin(); it != myvector.end(); ++it)
    {
        cout << " " << *it;
    }
    cout << endl;

    return0;
}

================================================================

vector有reserve何resize,二者何为不同?

相关图片

相关文章