标签: std

Seg Fault在C++容器上循环

这是代码(找到2组的联合):

template <class dtype>
void printSet(dtype data)
{
    std::cout<<"\n";
    for(auto i = data.begin(); i != data.end(); i++)
    {
        std::cout<<*i<<" ,";
    }
}

int main(int argc, char const *argv[])
{
    int arr[] = {1,2,3,4,5};
    std::set<long long> a(arr, arr + 5), b(arr, arr + 5), c;
    std::vector<long long> v;
    b.insert(1000);
    printSet(a);
    printSet(b);
    set_union(a.begin(), a.end(), b.begin(), b.end(), v.begin());
    printSet(v);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:

1 ,2 ,3 ,4 ,5 ,
[1]    9444 segmentation fault  ./a.out
Run Code Online (Sandbox Code Playgroud)

我在哪里搞砸了?

c++ std

0
推荐指数
2
解决办法
156
查看次数

C++ std :: map和std :: vector的优点?

在周末我将参加一个编程竞赛,我想知道我是否应该使用std :: vector或std :: map?我会简单地将它们用作数组,但我感到困惑哪个更好(主要是基本操作的速度)?

我在stackoverflow上看到这张图片,我不知道这些之间的主要区别是什么......

图片表明矢量更快......我真的不知道该怎么办请帮助我!我需要像数组一样使用它们但是具有动态尺寸...在此先感谢,

编辑 我可能会得到一个二维整数数组(例如一个城市或一个labirinth的地图,我会得到一些可以用图形算法或动态编程解决的问题),所以我需要的是:写,读取"表"的特定单元格,搜索特定值,我想这就是全部.我听说std :: map不会在内存中找到完整的N*M大小的表,但是我会按值来做它...所以它可能会使用更少的内存吗?

很抱歉这么傻但我从来没有真正的老师,我从中学到了我所知道的一切.我刚刚开始学习数据结构(2-3棵树,红黑树,二项式堆等等......)

c++ performance dictionary vector std

0
推荐指数
1
解决办法
1万
查看次数

底层std :: array的正确类型

我对C++很陌生,所以如果答案显而易见,我会道歉.

我一直在编写STL风格的自定义数据结构,以此来提高我的技能.(我实际上对这个结构也有实际需要,但是为了学习目的,我会有点过火.)

这个结构需要动态调整大小(比如矢量),在我的初稿中,我使底层的"容器"成为C风格的数组,并手动完成所有的分配和解除分配.我正在重构,我想使用C++ 11风格的std :: array作为我的底层结构,只是为了让代码更清晰一些.我的问题是我不知道如何以允许调整大小的方式声明数组类成员.由于不同的模板参数需要不同的类型,因此我不能将成员声明为数组,然后在调整大小时将相同的变量分配给数组.

我想为每个可能的大小声明一个成员,比如

private:
    array<T, 8>
    array<T, 16>
    array<T, 32>
    ...
Run Code Online (Sandbox Code Playgroud)

但我不希望每个数组都默认构造T成员.

这里有干净的解决方案吗?或者我只需要坚持使用C风格的数组?

谢谢您的帮助.

编辑:

在重新阅读我的问题后,我认为实际上并不合理.我知道std :: array的大小必须在编译时知道,但出于某种原因我的大脑推断我的目标是不可能的.现在我觉得很明显,我坚持使用C风格的数组和堆.我想我只需要写出来就可以清楚地表达出来.

谢谢你的回答.

c++ arrays std data-structures c++11

0
推荐指数
1
解决办法
160
查看次数

矢量push_back与转发?

我在我的代码中做了类似的事情

S s;
s.a=1
s.b=2
v.push_back(s)
Run Code Online (Sandbox Code Playgroud)

既然C++有转发,我可以写一些类似的东西

v.push_back(1,2)
Run Code Online (Sandbox Code Playgroud)

fyi visual studio支持转发,因为以下工作符合预期

//http://herbsutter.com/gotw/_102/
template<typename T, typename ...Args>
std::unique_ptr<T> make_unique( Args&& ...args )
{
    return std::unique_ptr<T>( new T( std::forward<Args>(args)... ) );
}
Run Code Online (Sandbox Code Playgroud)

c++ std c++11

0
推荐指数
1
解决办法
262
查看次数

我的C++程序没有执行我的cout代码

我正在学习C++,我正在尝试制作一个打印5个变量的简单程序,正如我的书中所说,但它并没有执行我的代码.

#include<iostream>
using namespace std;
int main()
{
    //Program Code below
    return 0;
    char letter;    letter = 'A'; //Declared, then initialized
    int number;    number = 100; //Declared, then initialized
    float decimal = 7.5;   //Declared AND initialized
    double pi = 3.14159;   //Declared AND initialized
    bool isTrue = false; //Declared AND initialized
    cout<<"Char letter: "<<letter<<endl;
    cout<<"Int number: "<<number<<endl;
    cout<<"Float decimal: "<<decimal<<endl;
    cout<<"Double pi: "<<pi<<endl;
    cout<<"Bool isTrue: "<<isTrue<<endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ cout std

0
推荐指数
1
解决办法
216
查看次数

什么更有效:vector.clear()或if(vector.empty())clear();?

作为主题陈述..哪个版本更有效,为什么?

std::vector a;
..

a.clear();
Run Code Online (Sandbox Code Playgroud)

要么

std::vector a;
..
if(!a.empty())
  a.clear();
Run Code Online (Sandbox Code Playgroud)

c++ std

0
推荐指数
1
解决办法
248
查看次数

为什么大学计算机科学课程推广'使用命名空间标准'?

到目前为止,我已经在C++上学过两门课,每门课都在不同的学校,并且他们都使用了'using namespace std;' 教基础编程.这可能是巧合,但我不得不自己去找出这样做不好的做法.

c++ std global-namespace

0
推荐指数
1
解决办法
511
查看次数

标准库implmentation源没有名称uglified

阅读C++源代码显然是一种很好的学习方式,当它是一个你很少了解的特性时,它就显得非常有趣.就标准库来源而言,由于名称的丑化,这很难实现.

在将源代码包含在标准库中之前,是否通过某种类型的源代码处理完成了uglifying?如果是这样,原始源代码会发生什么?是否有任何非uglified C++标准库源代码的存储库?

我在寻找有趣的C++ 11很快C++ 14种特别功能.

我无法想象保持这种形式的代码会非常有趣....

编辑:

有人建议在这里取消这个过程.

c++ std

0
推荐指数
1
解决办法
193
查看次数

c ++:交换地图地图

我有以下内容:

typedef std::map<int, std::map<std::string, std::string> > ComplexMap;
ComplexMap map_a;
ComplexMap map_b;
Run Code Online (Sandbox Code Playgroud)

我想将整个map_a交换为map_b.以下两个选项之间是否存在功能差异:

// 1

ComplexMap::iterator end = map_a.end;
for (ComplexMap::iterator it = map_a.begin(); it != end; ++it)
{
    mam_b[it->first].swap(it->second);
}

// 2

map_b.swap(map_a);
Run Code Online (Sandbox Code Playgroud)

c++ swap std

0
推荐指数
1
解决办法
70
查看次数

存储对象列表的最佳标准类?

什么是表示未编制索引列表的类,其中包括检查对象是否在列表中?

list<char> list;
list.add("obj");
if(list.inlist("obj")) doStuff();
list.remove("obj");
Run Code Online (Sandbox Code Playgroud)

优选地,该类必须在标准库或增强库中,但如果您知道任何其他方法,则无论如何都应该回答,因为它可能是有趣的.

我知道有一个std::list类,但它没有我正在寻找的功能.(检查对象是否在列表中)

c++ boost list std

0
推荐指数
2
解决办法
75
查看次数