小编Nav*_*een的帖子

内存使用对算法复杂性的影响

我正在阅读关于C++ STL算法的Nicolai Josuttis一书.对于许多算法,例如stable_sort(),他提到算法的复杂性n*log(n),如果有足够的内存可用,否则它是n*log(n)*log(n).我的问题是内存使用情况如何影响复杂性?STL如何检测这种情况?

c++ complexity-theory stl

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

C++套接字窗口

我有问题.我创建套接字,连接,发送字节,一切都好.

并且为了接收数据我使用recv函数.

char * TOReceive= new char[200];

recv(ConnectSocket, TOReceive , 200, 0);
Run Code Online (Sandbox Code Playgroud)

当有一些数据读取和返回时,成功,当没有数据等待数据时,我需要限制等待时间,例如,如果10秒没有数据应该返回.

非常感谢.

c++ sockets windows

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

模板语法

我正在阅读一本关于模板的书,并找到了以下代码:

template <template <class> class CreationPolicy>
class WidgetManager : public CreationPolicy<Widget>
{
...
void DoSomething()
{
Gadget* pW = CreationPolicy<Gadget>().Create();
...
}
};
Run Code Online (Sandbox Code Playgroud)

我没有获得为CreationPolicy指定的嵌套模板(这也是一个模板).奇怪的语法是什么意思?

c++ templates

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

在Win32/MFC中停止一个线程

我正在阅读一些与线程相关的代码,并发现了这段代码:

MyThread::start()
{
  //Create a thread
  m_pThread = AfxBeginThread(/*some parameters*/)

  //Create a duplicate handle for the created thread
  m_hDuplicateHandle = DuplicateHandle(/* some more parameters*/)
}

MyThread::stop()
{
  //Set some variables so that the thread comes out of its run() function
  WaitForSingleObject(m_hDuplicateHandle, defaultTimeout);

  CloseHandle(m_hDuplicateHandle);
}
Run Code Online (Sandbox Code Playgroud)

我的问题,为什么需要重复的句柄?我们不能直接等待原来的线程句柄吗?它以某种方式变得无效吗?

c++ winapi mfc multithreading

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

使用模板函数生成的代码与普通函数之间的差异

我有一个包含大量元素的向量.现在我想编写一个小函数来计算向量中偶数或奇数元素的数量.由于性能是一个主要问题,我不想在循环中放入if语句.所以我写了两个小函数,如:

long long countOdd(const std::vector<int>& v)
{
    long long count = 0;
    const int size = v.size();
    for(int i = 0; i < size; ++i)
    {
        if(v[i] & 1)
        {
            ++count;
        }
    }
    return count;
}

long long countEven(const std::vector<int>& v)
{
    long long count = 0;
    const int size = v.size();
    for(int i = 0; i < size; ++i)
    {
         if(0 == (v[i] & 1))
        {
            ++count;
        }
    }
    return count;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我可以通过编写这样的单个模板函数来获得相同的结果:

template <bool countEven>
long long countTemplate(const …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-construction templates code-generation

3
推荐指数
2
解决办法
740
查看次数

将std :: bind2nd与引用一起使用

我有一个像这样的简单类:

class A
{
public:
    void f(const int& n)
    {
        std::cout<<"A::f()" << n <<"\n";
    }
};
Run Code Online (Sandbox Code Playgroud)

我试图像这样使用它:

std::vector<A> vec;
A a;
vec.push_back(a);
std::for_each(vec.begin(), vec.end(), std::bind2nd(std::mem_fun_ref(&A::f), 9));
Run Code Online (Sandbox Code Playgroud)

但是当我编译代码时,我在函数头文件中的某处得到以下错误:

错误C2529:'_ Right':对引用的引用是非法的

如果我删除参数f()中的引用,它编译正常.我该如何解决这个问题?我不想删除引用,因为在我的实际代码中复制对象是非常昂贵的.另外,我没有使用提升.

c++ stl

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

指针所需的基本帮助(双重间接)

我前段时间问过一个帐户,我不记得如何操纵基本指针,有人给了我一个非常好的演示

例如

char *ptr = "hello" (hello = a char array)
Run Code Online (Sandbox Code Playgroud)

所以现在*ptr指向h

ptr++ =移动ptr指向下一个元素,得到它的值我做*ptr,这给了我e

好吧到目前为止我希望:D但是现在我需要操纵一个char **ptr并且想知道我是如何以一种模仿二维阵列效果的方式做到这一点的?

一些基本提示将非常感激,因为我需要做一个**ptr模仿二维数组的任务,而不知道它是如何做到这首先意味着我甚至无法在纸上解决它(例如,你如何解除引用**ptr ,你如何获得[x] [y]值等)

谢谢

c syntax pointers

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

从一个或多个线程访问std :: list

我需要std::list从我的应用程序中运行的一个或多个线程访问(仅读取)数据.

此列表将仅在引导应用程序时创建一次,并且此列表将在读取之后创建

从muliple线程...说我将这样做

for (std::list <iterator>iii=list->begin();ii!=list->end();ii++)
Run Code Online (Sandbox Code Playgroud)

从muliple线程中读取列表.

现在我的问题是,如果我没有同步访问列表,它会创建任何访问冲突问题吗?

我没有任何同步prirmitive运行应用程序.我没有面对任何问题.但由于我对此表示怀疑,我想确认一下.

根据我的理解,即使在mutithreading应用程序中,只有一个线程在运行时由OS执行.因为我没有从多个线程更新列表并且所有线程都在读取列表,所以可能没有必要给列表提供独占访问权限.它是否正确?

如果我做错了,请以正确的方式告诉我

c++ multithreading

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

如何在VC++ CString中验证有效的整数和浮点数

有人可以告诉我一种有效的方法来验证CString对象中存在的数字是有效整数还是浮点数?

c++ mfc

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

使用指针功能有什么好处?

使用函数指针而不是函数本身的真正好处是什么?它会使执行更快吗?或者当它传递给另一个函数时它是否提供了便利?

c++ function-pointers visual-c++

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