C++ 按顺序C和x2B逐个插入+;

C++ 按顺序C和x2B逐个插入+;,c++,visual-c++,C++,Visual C++,我有一个未排序的数组列表,我想将这个数组逐个插入到我的自定义数据结构中。当我创建插入函数时,它按顺序插入 测试arr为{9,10,7,8,5,6,3,4,1,2} 插入{1,3,5,7,9,10,8,6,4,2}后的列表 我的插入功能块 void insert(value_type d) { if (data.size() == 0) { data.push_back(d); } else if (data.size() > 0) { // get

我有一个未排序的数组列表,我想将这个数组逐个插入到我的自定义数据结构中。当我创建插入函数时,它按顺序插入

测试arr为{9,10,7,8,5,6,3,4,1,2}
插入{1,3,5,7,9,10,8,6,4,2}后的列表
我的插入功能块

void  insert(value_type d)
{
  if (data.size() == 0)
  {
     data.push_back(d);
  }
  else if (data.size() > 0)
  {
    // get data begin 
    //std::list<value_type>::iterator iter = data.begin();
    for (auto iter = data.begin(); iter != data.end();++iter)
    {
      if(d > *iter)
      {
        data.push_back(d);
        break;
      }
      else if (d <= *iter)
      {
        data.insert(iter,d);
        break;
      }
    }
  }
}
void插入(值\u类型d)
{
if(data.size()==0)
{
数据。推回(d);
}
else if(data.size()>0)
{
//开始获取数据
//std::list::iterator iter=data.begin();
对于(自动iter=data.begin();iter!=data.end();++iter)
{
如果(d>*iter)
{
数据。推回(d);
打破
}

否则,如果(d则显示您正在尝试执行插入排序的插入。标准库已介绍:

查找新元素在O(logn)中的位置-上界是二进制搜索:

var pos = std::upper_bound(data.begin(), data.end(), d);
在此处插入元素:

data.insert(pos, d);
甚至作为你整个功能的一行

data.insert(std::upper_bound(data.begin(), data.end(), d), d);

看起来你正试图通过线性搜索按顺序插入它们。这就是你想要做的吗?@MooingDuck这就是我想要做的吗?