小编Ste*_*sop的帖子

如何使用重载的std :: less for std :: map

我有以下代码段:

typedef char OR[12];

class COR
{
   OR m_or;
public:
   COR(const char* or) { strcpy(m_or, or); }
   COR(const COR& o) { strcpy(m_or, o.m_or); }
   const char* GetOR() const { return m_or; }

#if 0 // I do not wish to use this as it will create a temporary object
   bool operator<(const COR& left, const COR& right) const 
   { return (strcmp(left.m_or, right.m_or) < 0); }
#endif
};

namespace std {
   template<>
   struct less<COR> {
       bool operator()(const COR& cor, const char* or) …
Run Code Online (Sandbox Code Playgroud)

c++ stl

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

溢出和携带标志

是否可以将两个带符号的8位数字相加并设置进位和溢出位?

overflow addition 8-bit

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

基类指针vs继承类指针?

假设我有一个Dog继承自类的类Animal.这两行代码有什么区别?

    Animal *a = new Dog();
    Dog *d = new Dog();
Run Code Online (Sandbox Code Playgroud)

在一个中,指针用于基类,而在另一个中,指针用于派生类.但这种区别何时变得重要?对于多态性,任何一个都可以完全相同,对吧?

c++ polymorphism inheritance

5
推荐指数
2
解决办法
9402
查看次数

无法将INT_MIN的值分配给long long

signed long long value = -2147483648;
    cout << ((signed long long)value);
Run Code Online (Sandbox Code Playgroud)

输出2147483648(没有减号),为什么?

c++ built-in-types

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

os.path.join - 我可以在Windows和Cygwin之间获得一致性吗?

我非常喜欢一组文件名组件,它们会在Windows和Cygwin上为我提供一致且"漂亮"的文件名.这是我尝试过的:

  Input                                Windows      Cygwin
1 os.path.join('c:', 'foo', 'bar')     c:foo\bar    c:/foo/bar
2 os.path.join('c:\\', 'foo', 'bar')   c:\foo\bar   c:\/foo/bar
3 os.path.join('c:/', 'foo', 'bar')    c:/foo\bar   c:/foo/bar
Run Code Online (Sandbox Code Playgroud)

1不是我想要的Windows,我想要一个绝对路径,而不是相对于当前目录.

2和3都起作用,但不是(我在此定义)"漂亮",因为它们在一个平台或另一个平台上混合前后斜线.如果我可以避免这种情况,我的错误和日志消息将更具可读性.

选项4是在Windows和Cygwin 上定义一个driveroot等于变量的变量.或者是一个带驱动器号并返回相同功能的功能.但我更愿意避免这两者之间的平台特殊情况.c:\/cygdrive/c

我可以拥有我想要的一切(加入相同的路径组件,在两个平台上提供引用相同绝对路径的结果,并且不在任何平台上混合路径分隔符)?或者我必须在某处妥协?

[编辑:如果它有帮助,主要用例是c:\foo我在配置时知道的路径,而bar(和其他组件)稍后计算.所以我的实际代码目前看起来更像这样:

dir = os.path.join('c:\\', 'foo')

# some time later

os.path.join(dir, 'bar')
Run Code Online (Sandbox Code Playgroud)

这是使用选项2,这导致Windows中的文件名"很好"报告,但在Cygwin中报告文件名"不好".如果可能的话,我想避免的是:

if this_is_cygwin():
    dir = '/cygdrive/c/foo'
else:
    dir = 'c:\\foo'
Run Code Online (Sandbox Code Playgroud)

]

python windows filenames cygwin

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

在显式实例化vector <someType>时,someType默认构造函数用于什么?

这是C++ Primer第5版的练习:

练习16.26:假设NoDefault是一个没有默认构造函数的类,我们可以显式实例化vector<NoDefault>吗?如果没有,为什么不呢?P.677

我知道如果类NoDefault没有默认构造函数,它就不会编译,但无法解释原因.任何人都可以告诉我在显式实例化时如何使用默认构造函数template class std::vector<NoDefault>

c++ templates stl vector

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

排序最多1000万个7位数字.约束:1M RAM,高速.几秒钟是好的

排序最多1000万个7位数字.约束:1M RAM,高速.几秒钟是好的.

[编辑:来自提问者的评论:输入值不同]

使用位图数据结构是解决此问题的好方法.

这意味着我需要一个字符串,长度最多为1000万???? RAM足够了吗?困惑在这里.谢谢

algorithm data-structures

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

在C++中,如何测试与"|"结合的几个标志之一 在一个论点?

我有下一个代码:

int main()
{
 OwnSelect(23, FD_READ | FD_WRITE); // <---- Several arguments as one
 return 0;
}

int OwnSelect(SOCKET s, long lNetworkEvents)
{
 // How can i check that FD_READ has been passed?
 if(lNetworkEvents == FD_READ)
 {
  // never here
 }
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果已经使用FD_READ传递了另一个FD,我如何检查FD_READ是否已通过.谢谢!

c++ arguments function

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

对于std :: string :: c_str,无法从'const char*'转换为'char*'

这给出了错误:无法从'const char*'转换为'char*'.

class Mock
{
public:
    ...
    static void func(char **result)
    {
          *result = (resultsI++)->c_str();
    }
static std::vector<std::string> results;
static std::vector<std::string>::iterator resultsI;
};

std::vector<std::string> Mock::results;
std::vector<std::string>::iterator Mock::resultsI;
Run Code Online (Sandbox Code Playgroud)

如何在不更改函数func的接口的情况下有效地消除此错误?该接口的实现者:

void (func*)(char **result) 
Run Code Online (Sandbox Code Playgroud)

忘了在签名中使用const char**.我无法改变它.

记住这是一个模拟,我只在我的单元测试中使用.

c++

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

有没有办法检查外部数据是否通过管道传输到程序或程序是否独立运行?

即数据已由其他程序提供,或者用户必须手动输入.我指的是这两种状态:

dir /b /s *.* | myprogram
Run Code Online (Sandbox Code Playgroud)

myprogram
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,程序将等待用户输入.有办法防止这种情况吗?

c++ windows console

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