gpt4 book ai didi

c++ - 插入通用容器不起作用

转载 作者:行者123 更新时间:2023-11-27 23:18:15 25 4
gpt4 key购买 nike

我正在尝试生成 int 或 double 类型的随机数,然后将它们插入到一种容器 vector 中,按排序顺序列出但问题是插入不工作,我不知道为什么,所以你能帮我吗?

#include <iostream>
#include <iterator>
#include <random>
#include <vector>
#include<list>
#include<deque>
#include <algorithm>
#include <chrono>

using namespace std;

int random_gen(){
default_random_engine re { std::random_device()() };
uniform_int_distribution<int> dist;
auto r= bind(dist,re);
int x =r();
return x;
}



template<typename SequenceContainer>
void build_cont(const SequenceContainer& seq, int n)
{
for(int i=0; i!=n; ++i) {
int gen = random_gen();
//std::iterator<T> it=lower_bound(begin(seq), end(seq), gen);
typename SequenceContainer::iterator it;
it=find_if(seq.begin(), seq.end(), [it](){ return *it<gen;});
seq.insert(it, gen);
}
for(auto i:seq)
cout<<i<<endl;
}
int main() {
int n=10;
vector<int> v;
list<int>ls;
deque<int> deq;
build_cont(v, n);
build_cont(ls, n);
build_cont(deq, n);

return 0;
}

我现在遇到的错误是链接器错误,所以我不知道出了什么问题??

最佳答案

有两个问题:

  1. 您不能采用对 SequenceContainer 的 const 引用,然后尝试获取非常量迭代器或将项目插入到该 const 引用中。删除常量。

  2. 你需要在lambda捕获子句中包含'gen',并且它必须将值作为参数:

    typename SequenceContainer::iterator it = find_if(
    seq.begin(),
    seq.end(),
    [gen](const int& val) { return gen < val; }
    );

关于c++ - 插入通用容器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15081348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com