小编Ama*_*wal的帖子

列表迭代器不可递增

我有一个使用visual studio 2003构建的旧项目,最近我用vs2005重新编译了它.但是,在运行时,我收到以下错误:

列表迭代器不可递增

我跟踪程序到这个函数:

void InputQueue::update()
{
    list<PCB>::iterator iter;
    list<PCB>::iterator iterTemp;
    for(iter = begin(); iter != end(); iter++)
    {
        if(iter->arrivalTime == 0)
        {           
            ReadyQueue::getInstance()->add(*iter);
            iterTemp = iter;
            iter++;
            erase(iterTemp);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我不是C++专家,这就是VS调试器给我的.有人可以向我解释问题是什么吗?

谢谢

c++ iterator stl list

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

头文件中的代码会增加二进制大小吗?

考虑一下:

class Foo{
      void func1(){
            /*func1 code*/

      }

      void func2(){
            /*func2 code*/

      }


};
Run Code Online (Sandbox Code Playgroud)

案例 1:Foo.h 中的 Foo 类

案例 2:Foo 类很好地分离在 Foo.h 和 Foo.cpp 中

其他各种 cpp 文件包括 Foo.h

我的问题是...案例 1 会导致更大的二进制文件吗?

c++ binary executable

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

MVC 和命令模式

好吧,这有点愚蠢。我正在尝试围绕 MVC 和命令模式的使用。这些问题主要涉及在哪里放置代码。

在 MVC 模式中,命令在哪里实例化?它们是由控制器创建的,还是完全包含在模型中,或者两者都不是。

顺便说一句,如果不需要撤消/重做,应该使用命令模式。

问候

model-view-controller command-pattern

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

如何在使用GetDlgItemText()函数时计算LPWSTR大小

我的请求很小我GetDlgItem()用来从文本字段中获取文本,但我在第四个参数(即缓冲区的大小)中有问题.

LPWSTR txtbuff;
GetDlgItemText(hwnd, IDC_EDIT1, txtbuff, 50); // the fourth parameter (50)
MessageBox(NULL,txtbuff,L"Error message",MB_OK)
Run Code Online (Sandbox Code Playgroud)

我该如何计算尺寸 txtbuff

c++ winapi

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

c ++ 03:std :: map中内置类型的默认构造函数

我一直以为代码如下

std::map<int, int> test;
std::cout << test[0] << std::endl;
Run Code Online (Sandbox Code Playgroud)

会打印随机值,因为它会在map中创建单位化值.但是,事实证明,创建的int实际上总是初始化为零,并且标准内置类型在某些情况下也是零初始化的.

问题是:当对标准类型(int/char/float/double/size_t)执行零初始化时?我很确定,如果我int i;在不知名的地方宣布,它将包含随机数据.

PS问题是关于C++ 03标准.问题的原因是,现在我不再确定何时必须为内置类型(如int/float/size_t)提供初始化,或者可以安全地省略它.

c++ stdmap c++03

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

$(window).width()在IE9中不起作用

我正在做类似的事情:

// get the screen height and width 
var maskHeight = $(document).height(); 
var maskWidth = $(window).width();

// calculate the values for center alignment
var dialogLeft = (maskWidth/2) - ($('#dialog-box').width()/2);
Run Code Online (Sandbox Code Playgroud)

但看起来它在IE9中不起作用.

javascript jquery cross-browser internet-explorer-9

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

使用gdb跟踪C++中的函数调用

我有一个在Linux平台上用C++开发的系统.我正在对这个系统进行一些调试.我想查找函数的完整函数调用序列.让我们假设函数按以下顺序调用

function_1 -> function_2 -> function_3 -> function_4
Run Code Online (Sandbox Code Playgroud)

如果我在function_4上设置了一个断点,那么执行将在那时保持.我想看看在function_4之前调用functions_1,function_2和function_3.如果有任何gdb命令来跟踪这些函数调用?

谢谢,Ankur

c++ debugging callstack gdb

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

如何确定C++对象是否为time_t

如何确定C++对象是否是time_t,而不是整数类型time_t被定义为?

我特意想模板专门化一个函数,

template <typename T> void myFunction( T val );
template<>            void myFunction<time_t>( time_t val );
Run Code Online (Sandbox Code Playgroud)

这样当定义了time_t的整数类型被传递时,会调用unspecialized函数.

我的STL实现定义time_tlong,因此myFunction(42L)调用time_t特化.我怎么能阻止这个?

我尝试了专门化long,这导致编译错误(正文已定义).我也试过rtti,typeid(time_t).name()回归"long".

我如何区分time_t它被定义为的整数类型,和/或模板专门化time_t使得它的整数类型不会传递给专门化?

使用模板的方法更可取,但我会接受任何解决方案,运行时或编译时.

c++ templates typedef rtti template-specialization

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

每次执行时,是否会计算两个常量的乘积?

例如,如果我有:

if(x < 2*0.025) { ... }

是否2*0.025得到计算每一次?或者是否0.05取代,以便乘法操作不必每次都运行?

换句话说,使用它0.05而不是更有效2*0.025吗?

c++ performance processing-efficiency

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

重载比较运算符以在C ++中使用STL排序

我正在编写一个程序,该程序将读取具有社会安全号码的名称列表(当然不是真实的名称),并根据命令行参数根据姓氏或ssn对列表进行排序。为了简单起见,我已经重载了<运算符和重载了输入和输出运算符。一切都可以正常编译,直到我在main末尾添加sort函数和输出为止。我很沮丧 有任何想法吗?任何其他提示也将不胜感激。

#include <algorithm>
#include <iostream>
#include <vector>
#include <cstdlib>
#include <fstream>
using namespace std;

enum sortVar { NAME, SOCSEC };

class record {
    public:
        friend bool operator<(record& rhs, record& name);
        friend ostream& operator<<(ostream& out, record& toWrite);
        friend istream& operator>>(istream& in, record& toRead);
        bool t_sort;    
    private:
        string firstName, lastName, ssn;

};

bool operator<(record& rhs, record& next)
{
    if (rhs.t_sort = false) {
        if (rhs.lastName == next.lastName)
            return rhs.firstName < next.firstName;
        else
            return rhs.lastName < next.lastName;
    }
    else if (rhs.t_sort = …
Run Code Online (Sandbox Code Playgroud)

c++ sorting stl operator-overloading stl-algorithm

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