小编Cas*_*ton的帖子

用于实现堆栈的链接列表与动态数组

我开始在学校最后一年开始之前检查数据结构和算法,以确保我掌握一切.一个评论问题说"使用链表或动态数组实现堆栈并解释为什么你做出了最好的选择".

对我来说,使用带有尾指针的列表来实现堆栈似乎更直观,因为它可能需要经常调整大小.对于大量数据来说,列表是更好的选择,因为动态数组重新调整大小是一项昂贵的操作.此外,使用列表,您不需要分配比实际需要更多的空间,因此它更节省空间.

但是,动态数组肯定允许更快地添加数据(除非需要调整大小).但是,我不确定使用数组是否整体更快,或者只是不需要调整大小.

该书的解决方案说"存储非常大的对象,列表是一个更好的实现",但我不明白为什么.

哪种方式最好?应该使用哪些因素来确定哪种实施方式"最佳"?还有,我的逻辑是什么?

performance stack linked-list dynamic-arrays data-structures

29
推荐指数
2
解决办法
2万
查看次数

C++:将枚举作为值或作为const引用传递是否更好?

这里有两个相关的问题:

A)如何实现枚举?例如,如果我有代码:

enum myType
{ 
   TYPE_1,
   TYPE_2
};
Run Code Online (Sandbox Code Playgroud)

究竟发生了什么?我知道您可以将TYPE_1和TYPE_2视为整数,但它们实际上只是整数?

B)基于该信息,假设传入的枚举不需要更改,将myType作为值或const引用传递给函数会更有意义吗?

例如,哪个是更好的选择:

void myFunction(myType x){ // some stuff }
Run Code Online (Sandbox Code Playgroud)

要么

void myFunction(const myType& x) { // some stuff }
Run Code Online (Sandbox Code Playgroud)

c++ performance enums const-reference

23
推荐指数
2
解决办法
9592
查看次数

OCaml:模式匹配与If/else语句

所以,我对OCaml完全不熟悉,并且在实现我的第一个函数方面进展缓慢.我理解困难的一件事是何时使用模式匹配能力

let foo = 
[] -> true
| _  -> false;;
Run Code Online (Sandbox Code Playgroud)

vs使用if else结构

let foo a = 
if a = [] then true else false;;
Run Code Online (Sandbox Code Playgroud)

我什么时候应该使用?

ocaml functional-programming if-statement pattern-matching

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

STL Map是否自动初始化值?

可能重复:
为什么在STL映射中用作值的类需要...中的默认构造函数?

当我使用地图时,值肯定会被初始化为默认值,还是我不应该依赖它?

例如,假设我有以下代码:

map<string, int> myMap;
cout << myMap["Hey"];
Run Code Online (Sandbox Code Playgroud)

这将使用我的编译器输出"0".这是保证的行为吗?这可能不会总是初始化为0吗?

c++ stl map

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

我如何解决Visual C++ 2005的"超出装饰名称长度,名称被截断"警告?

例如,出于某种原因,我说有一段看起来像这样的代码:

mutable std::vector<std::vector<std::vector<std::vector<
std::vector<MyNamespace::MyType> > > > > myFreakingLongVectorThing;
Run Code Online (Sandbox Code Playgroud)

我收到的警告看起来像这样:

C:\Program Files (x86)\Microsoft Visual Studio 8\VC\include\xstring(1665) : warning   
    C4503: 'std::vector<_Ty>::operator []' : decorated name length exceeded, name was truncated
    with
    [
      _Ty=std::vector<std::vector<std::vector<std::vector<std::vector<MyNamespace::MyType>>>>>
    ]
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以重写那个怪异的长矢量的东西,以免得到那个警告?我仍然希望数据结构相同,但不要得到那个警告.我不想禁用警告.可能?

注意:这是Visual Studio 2005

....如果你真的很好奇为什么我正在使用这种可怕的数据结构,它是由自动生成的代码引起的.

c++ warnings visual-studio-2005 visual-c++ name-decoration

14
推荐指数
2
解决办法
8587
查看次数

C++:使用带有成员函数的函数指针

我试图将一个函数作为参数传递给另一个函数,它们都碰巧是同一个类的成员函数.

我得到一个奇怪的错误,我无法弄清楚问题是什么.

这是我的功能:

void myClass::functionToPass()
{
   // does something
}

void myClass::function1(void (*passedFunction)())
{
   (*passedFunction)();
}

void myClass::function2()
{
   function1( &myClass::functionToPass );
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

   cannot convert parameter 1 from 'void(__thiscall myClass::*) (void)' 
   to 'void(__cdecl*)(void)'
Run Code Online (Sandbox Code Playgroud)

什么给出了什么?我觉得我已尝试过各种变化,试图让它发挥作用.你甚至可以传递成员函数的函数指针吗?我怎样才能让它发挥作用?

注意:使functionToPass静态不是一个真正有效的选项.

c++ member-function-pointers function-pointers

10
推荐指数
1
解决办法
3014
查看次数

OCaml:在定义函数之前声明它

有没有办法在OCaml中定义函数之前声明一个函数?我正在使用OCaml解释器.

我有两个功能:

let myFunctionA = 
(* some stuff here..... *) myFunctionB (*some stuff *)

let myFunctionB = 
(* some stuff here .... *) myFunctionA (* some stuff *)
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为myFunctionA在制作之前无法调用myFunctionB.

我做了一些谷歌搜索,但似乎找不到任何东西.我怎么能做到这一点?

ocaml functional-programming function mutual-recursion function-declaration

10
推荐指数
1
解决办法
4909
查看次数

如何在Java中模拟引用传递?

我是一个完整的Java菜鸟.我知道Java将所有参数视为按值传递,并且还有其他一些线程可供人们解释.

例如,在C++中我可以这样做:

void makeAThree(int &n)
{
   n = 3;
}
int main()
{
   int myInt = 4;
   makeAThree(myInt);
   cout << myInt;
}
Run Code Online (Sandbox Code Playgroud)

哪个将输出3.我知道在Java中,所有参数都是按值传递的,因此您无法操纵传入的参数.是否有一种标准的方法来模拟 Java中的引用传递?有没有办法调用一个操作传入的变量的函数?我很难理解无法做到这一点的想法.

java pass-by-reference

9
推荐指数
2
解决办法
8931
查看次数

OCaml:存储一些以后要使用的值会引入"副作用"吗?

对于家庭作业,我们已被指示完成任务而不引入任何"副作用".我在维基百科上查找了"副作用",虽然我从理论上说它意味着"修改一个状态或者与调用函数有一个可观察的交互",但我很难搞清楚具体细节.

例如,创建一个保存非编译时间结果的值会引入副作用吗?

说我有(可能在语法上不完美):

val myList = (someFunction x y);;
if List.exists ((=) 7) myList then true else false;;
Run Code Online (Sandbox Code Playgroud)

这会引入副作用吗?我想也许我对"修改状态"在副作用定义中意味着什么感到困惑.

ocaml functional-programming side-effects

8
推荐指数
2
解决办法
230
查看次数

点和框解算算法

我正在制作一个" 点和盒子 "程序,其中输入是由计算机自动生成的,我们的输出是我们将要做的动作.我将与另一个玩家(他们的算法)竞争.

我将点和框板表​​示为Python中的矩阵.赢得游戏是首要任务:算法效率并不重要.

在给定电路板的情况下,是否有最好的,不复杂的算法来自动确定我们应该采取什么措施?

PS - 如果你想要的话,你不需要给我任何代码......英语算法是完全可以接受的.

python algorithm

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