小编bra*_*ter的帖子

为什么在有界队列中使用数组作为数据结构是个坏主意?

我正在考虑使用数组实现有界队列(固定容量).然后我偶然发现了这篇关于有界队列的wiki文章.它提到:

由于将项目复制到队列前面所花费的时间,因此数组效率低下

我不太明白这是怎么回事?当我们入队或出队时,我们只是将索引更新为head或tail.我们在哪里将项目复制到队列的前面?

arrays algorithm queue data-structures

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

有人可以解释这个java泛型语法吗?

public static <T> List<T> listAndCast(Query query) {
        @SuppressWarnings("unchecked")
        List<T> list = query.list();
        return list;
    }
Run Code Online (Sandbox Code Playgroud)

在以下行中:

public static <T> List<T> listAndCast(Query query) {
Run Code Online (Sandbox Code Playgroud)

我们为什么需要<T>

java generics

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

如何使用jquery唯一添加选项以进行选择

我有一堆独特的选择<select>.我需要添加一个新选项,只有它是唯一的并且不存在于现有选项中.

如何使用jquery 查找给定的option已存在select

例如:

<select id="combobox">
    <option value="">Select one...</option>
    <option value="Apple">Apple</option>
    <option value="Banana">Banana</option>
    <option value="Pears">Pears</option>
</select>
Run Code Online (Sandbox Code Playgroud)
  • 新的有效选项:梨
  • 新的无效选项:Apple

jquery html-select

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

为什么我在使用shared_ptr时会遇到此运行时异常?

在下面的代码中,我在返回1后得到以下运行时异常(可能是内存泄漏); 在Node()的析构函数中.

Unhandled exception at 0x0f9bad4a (msvcp100d.dll) in test.exe: 0xC0000005: Access violation reading location 0xfeeefef2.

我使用smart_ptr已经有一段时间了,所以我想知道我在这里做错了什么?

#include <vector>
#include <queue>
#include <memory>

#include <iostream>
using namespace std;

class Node;
typedef shared_ptr<Node> SharedNode;

class Node {
    Node* parent;
    vector< SharedNode > children;
    int value;

    //limiting construction
    Node(int a_value):value(a_value),parent(0){}
    Node(const Node &copy); //non-construction-copyable
    Node& operator=(const Node& copy); //non-copyable
public:
    static SharedNode create(int a_value){
        return SharedNode(new Node(a_value));
    }
    SharedNode addChild(SharedNode child){
        child->parent = this;
        children.push_back(child);
        return child;
    }

SharedNode getNode(int searchValue);
};

SharedNode …
Run Code Online (Sandbox Code Playgroud)

c++ shared-ptr

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

c ++中的overload +和+ =运算符

我这样做是为了个人练习,并希望确保我做对了并正确理解它.我有一个带成员行和列的坐标类.我想重载+和+ =运算符.这是我的代码:

Coordinate& Coordinate :: operator+= (const Coordinate& rhs){
    this->m_Row += rhs.m_Row;
    this->m_Column += rhs.m_Column;

    return *this;
}

Coordinate& operator+ (const Coordinate& lhs, const Coordinate& rhs) {
    return Coordinate(lhs) += rhs;
}
Run Code Online (Sandbox Code Playgroud)

哪里

friend Coordinate& operator + (const Coordinate& lhs, const Coordinate& rhs);
Run Code Online (Sandbox Code Playgroud)

是Coordinate类中定义的友元函数.

这段代码有什么缺陷吗?

以下是我对这些工作原理的理解:

operator += 
Run Code Online (Sandbox Code Playgroud)

rhsm_Row和m_Column 添加到this成员.返回a reference to the object pointed by this pointer,从而避免由于复制构造函数而创建另一个对象.

operator +
Run Code Online (Sandbox Code Playgroud)

使用复制构造函数创建一个本地对象lhs(因为它lhs是一个常量,我们不想修改它的内容)(让我们调用它localObj).调用执行添加的+=成员运算符localObj.返回a,reference to this localObj …

c++ reference operator-overloading return-by-reference

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

什么是装载机锁?

我正在处理线程并且存在潜在的死锁问题.有人向我提到装载机锁.

我在网上找不到太多信息.有人可以帮我解释一下,"什么是Loader Lock "?

windows multithreading deadlock locking

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

在数组中查找元素,其中每个元素比其前一个元素多一个或一个

给定一个数组,每个元素比其前一个元素多一个或一个.查找其中的一个元素.(优于O(n)方法)

我有一个解决方案,但我没有办法正式告诉它是否是正确的解决方案:

让我们假设我们必须找到n.

  • 从给定的索引中,找到到n的距离; d = | a [0] - n |
  • 所需的元素将是至少d元素分开和跳跃d元素
  • 重复上面直到d= 0

arrays algorithm data-structures

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

为什么不strlen(..)期望const char*const str而不是const char*

我正在读这个:const char*const与const char*?

string.h,strlen定义为:

size_t strlen ( const char * str );
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,strlen需要一个指向const的char的指针.不应该是:

size_t strlen ( const char* const str );
Run Code Online (Sandbox Code Playgroud)

这样可以确保strlen不能修改指针指向不同的指针吗?

或者,是这样的情况:

由于str指针将通过值传递给strlen,因此函数中对此指针的任何更改都不会更改源指针,因此它没关系..

??

c++ string

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

当我从主集中删除fds时,为什么需要在select调用中更新nfds?

给出这样的选择调用:

select(fdMax+1, &readFds, NULL, NULL, &timeoutVal)
Run Code Online (Sandbox Code Playgroud)

readFds何时更新

  • 新的fd被添加
  • 现有的fd被删除

每当添加新的fd时,我都会更新fdMax.但是,每当现有的fd被删除时,我都在想if I really need to update the fdMax also

如果我有更高的fdMax并且没有足够的fds来读取它会有什么不同?

c sockets select

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

将成员函数传递给委托时的编译器错误

当我尝试将成员函数(从SoundManager类)传递给委托(在EventManager中)时,我收到编译器错误.
错误:参数2:无法从'方法组'转换为'Event_Sharp.FunctionHandler'
代码:

public delegate void FunctionHandler(IEvent evnt);
Run Code Online (Sandbox Code Playgroud)

事件管理器::

public void RegisterListener(int type, FunctionHandler handler)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

SoundManager.cs(构造函数):

EventManager.Instance.RegisterListener(Event_Bullet_Fired.GetType(), HandleBulletFired );
Run Code Online (Sandbox Code Playgroud)

其中HandleBulletFired是SoundManager的成员:

void HandleBulletFired(Event_Bullet_Fired evnt)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

并且,Event_Bullet_Fired实现了IEvent接口.有人可以告诉我为什么我收到此错误以及为什么我不能使用HandleBulletFired作为委托?

c# delegates compiler-errors function-pointers

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