小编Ank*_*kur的帖子

对自定义对象的矢量进行排序

如何排序包含自定义(即用户定义)对象的向量.
可能应该使用标准STL算法与谓词(函数或函数对象)一起排序,该谓词将在自定义对象中的一个字段(作为排序键)上操作.
我是在正确的轨道上吗?

c++ sorting stl

231
推荐指数
9
解决办法
36万
查看次数

Meyers对Singleton模式线程的实现是否安全?

以下实现,使用延迟初始化Singleton(Meyers'Seingleton)线程安全吗?

static Singleton& instance()
{
     static Singleton s;
     return s;
}
Run Code Online (Sandbox Code Playgroud)

如果没有,为什么以及如何使其线程安全?

c++ multithreading design-patterns

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

C库函数做排序

C标准库中是否有可用于排序的库函数?

c sorting

92
推荐指数
7
解决办法
17万
查看次数

从字符串中删除前导和尾随空格

如何在C++中从字符串对象中删除空格.
例如,如何从下面的字符串对象中删除前导和尾随空格.

//Original string: "         This is a sample string                    "
//Desired string: "This is a sample string"
Run Code Online (Sandbox Code Playgroud)

据我所知,字符串类没有提供任何删除前导和尾随空格的方法.

要添加问题,如何扩展此格式以处理字符串的单词之间的额外空格.例如,

// Original string: "          This       is         a sample   string    " 
// Desired string:  "This is a sample string"  
Run Code Online (Sandbox Code Playgroud)

使用解决方案中提到的字符串方法,我可以考虑分两步执行这些操作.

  1. 删除前导和尾随空格.
  2. 在字边界处重复使用find_first_of,find_last_of,find_first_not_of,find_last_not_of和substr以获得所需的格式.

c++ string

74
推荐指数
10
解决办法
17万
查看次数

使map :: find操作不敏感

map :: find方法是否支持不区分大小写的搜索?
我有一张地图如下

map<string, vector<string> > directory;
Run Code Online (Sandbox Code Playgroud)

并希望下面的搜索忽略大小写.

directory.find(search_string);
Run Code Online (Sandbox Code Playgroud)

c++ string dictionary stl case-insensitive

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

Singleton模式的问题

我最近几天一直在阅读关于Singleton模式的文章.一般认为,需要它的场景很少(如果不是很少见),可能是因为它有一些问题,例如

  • 在垃圾收集环境中,它可能是内存管理方面的问题.
  • 在多线程环境中,它可能导致瓶颈并引入同步问题.
  • 来自测试的头痛.

我开始了解这些问题背后的想法,但不完全确定这些问题.就像垃圾收集问题一样,在单例实现中使用静态(这是模式固有的),是关注点吗?因为这意味着静态实例将持续到应用程序.它是否会降低内存管理(它只是意味着分配给单例模式的内存不会被释放)?

当然,在多线程设置中,让所有线程都争用单例实例将是一个瓶颈.但是这种模式的使用如何导致同步问题(当然我们可以使用互斥或​​类似的东西来同步访问).

从(单元?)测试的角度来看,由于单身人士使用静态方法(很难被模拟或存根),他们可能会导致问题.对此不确定.有人可以详细说明这个测试问题吗?

谢谢.

c++ singleton design-patterns

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

初始化列表的好处

我所知道的使用初始化列表的好处是它们在初始化非内置的类成员时提供了效率.例如,

Fred::Fred() : x_(whatever) { }

比较好,

Fred::Fred() { x_ = whatever; }

如果x是自定义类的对象.除此之外,为了保持一致性,这种风格甚至与内置类型一起使用.

这样做的最常见好处是提高了性能.如果表达式与成员变量x_的类型相同,则任何表达式的结果都直接在x_中构造 - 编译器不会创建该对象的单独副本.

使用另一种样式,表达式可以创建单独的临时对象,并将此临时对象传递给x_对象的赋值运算符.然后该临时对象在;处被破坏.那效率很低.

问题
使用初始化列表,以下示例中是否存在任何效率增益.我认为没有收获.第一个版本调用字符串的复制构造函数,另一个调用字符串的赋值运算符(没有创建任何临时的).这是正确的吗?

class MyClass
{
public:
    MyClass(string n):name(n) { }
private:
    string name;
};

class MyClass
{
public:
    MyClass(string n)
    {
        name=n;
    }
private:
    string name;
};
Run Code Online (Sandbox Code Playgroud)

c++ initialization-list

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

Windows中的JRE安装目录

是否有任何命令检查活动(因为机器可以安装多个JRE)JRE安装目录在Windows下.对于linux,相应的命令是

which java
Run Code Online (Sandbox Code Playgroud)

有没有Windows等价的?

java

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

找不到Junit方法

我正在尝试使用junit框架构建一个示例测试类.
我已经下载了junit4.9b3.
当我尝试编译我的测试类时,我收到以下错误: -

javac -cp ".;C:\Documents and Settings\user\Desktop\junit\junit4.9b3\junit-4.9b3.jar"     
TestSubscription.java    
TestSubscription.java:10: cannot find symbol    
symbol  : method assertTrue(boolean)    
location: class TestSubscription    
            assertTrue(s.pricePerMonth()==100.0);        
            ^
TestSubscription.java:17: cannot find symbol    
symbol  : method assertTrue(boolean)    
location: class TestSubscription    
            assertTrue(s.pricePerMonth()==66.67);
            ^
2 errors
Run Code Online (Sandbox Code Playgroud)

看起来assertTrue不可用,但是junit javadoc提到了这个方法.
我正在使用导入如下

import org.junit.*;     
import org.junit.Assert.*;
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

java junit

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

如何通过多个键索引和查询STL映射容器?

我遇到了一个记录存储为的要求

Name :  Employee_Id  :  Address
Run Code Online (Sandbox Code Playgroud)

其中Name和Employee_Id应该是键,在Name和Employee Id上都提供搜索功能.

我可以考虑使用地图来存储这个结构

std::map< std:pair<std::string,std::string> , std::string >  
//      <         < Name   ,   Employee-Id> , Address     > 
Run Code Online (Sandbox Code Playgroud)

但我不确定搜索功能的样子.

c++ containers stl

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