小编Igo*_*gor的帖子

如何在排序的向量中插入值?

所有,

这个问题的延续这一个.我认为STL错过了这个功能,但它只是我的恕我直言.

现在,问题.

考虑以下代码:

class Foo
{
public:
    Foo();
    int paramA, paramB;
    std::string name;
};

struct Sorter
{
    bool operator()(const Foo &foo1, const Foo &foo2) const
    {
         switch( paramSorter )
         {
             case 1:
                 return foo1.paramA < foo2.paramA;
             case 2:
                 return foo1.paramB < foo2.paramB;
             default:
                 return foo1.name < foo2.name;
         }
    }

    int paramSorter;
};

int main()
{
    std::vector<Foo> foo;
    Sorter sorter;
    sorter.paramSorter = 0;
        // fill the vector
    std::sort( foo.begin(), foo.end(), sorter );
}
Run Code Online (Sandbox Code Playgroud)

在任何给定的时刻,矢量都可以重新排序.该类还具有在分类器结构中使用的getter方法.

在向量中插入新元素的最有效方法是什么?

我的情况是:

我有一个网格(电子表格),它使用类的排序向量.在任何给定时间,可以重新排序向量,并且网格将相应地显示排序的数据.

现在我需要在向量/网格中插入一个新元素.我可以插入,然后重新排序然后重新显示整个网格,但这对于大网格来说效率非常低. …

c++ sorting stl vector insertion-sort

35
推荐指数
4
解决办法
7万
查看次数

STL中是否有分类容器?

STL中是否有分类容器?

我的意思是:我有一个std::vector<Foo>,Foo定制的类在哪里.我还有一个比较器,它将比较类的字段Foo.

现在,我在我的代码中的某个地方:

std::sort( myvec.begin(), myvec.end(), comparator );
Run Code Online (Sandbox Code Playgroud)

它将根据我在比较器中定义的规则对矢量进行排序.

现在我想在Foo该向量中插入一个class元素.如果可以的话,我想写一下:

 mysortedvector.push_back( Foo() );
Run Code Online (Sandbox Code Playgroud)

会发生什么,矢量会根据比较器将这个新元素放到它的位置.

相反,现在我必须写:

myvec.push_back( Foo() );
std::sort( myvec.begin(), myvec.end(), comparator );
Run Code Online (Sandbox Code Playgroud)

这只是浪费时间,因为矢量已经排序,我需要的是适当地放置新元素.

现在,由于我的程序的性质,我不能使用,std::map<>因为我没有键/值对,只是一个简单的向量.

如果我使用stl::list,我再次需要在每次插入后调用sort.

c++ sorting containers stl vector

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

查询获取Oracle DB版本

我正在寻找一种方法来获取 Oracle DB Server 版本作为“XYZ”。

我可以从这里使用查询,但它会显示不仅仅是服务器的版本。

我可以使用v$version视图,但生成的字符串将包含的不仅仅是“XYZ”。

有没有一种简单的方法可以得到我想要的东西?

sql oracle version

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

如何编写一个使用迭代器和索引计数器的for循环?

我有一个看起来像这样的函数:

void myclass::myfunc()
{
    int i;
    for( std::vector<Foo>::iterator it = var.begin(), i = 0; it < var.end(); it++, i++ )
    {
        /* ... */
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

无法转换intstd::_Vector_iterator<>

这段代码有什么问题?

c++ for-loop stl

14
推荐指数
2
解决办法
4702
查看次数

创建位图绘制

所有,

作为建议在这里我需要做一个可绘制出我的位图.但是,当我试图使用:

 Drawable d = new Drawable( my_bmp);
Run Code Online (Sandbox Code Playgroud)

它表明这个构造函数已被弃用,以支持:

 Drawable(Bitmap bmp, int resourceId)
Run Code Online (Sandbox Code Playgroud)

我还能怎么做出来绘制的位图?

谢谢.

android bitmap drawable

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

字符串包含组中的任何字符?

我有一组字符:\,/,?,%等.我也有一个字符串,让我们说"这是我的字符串%my string?"

我想检查字符串中是否存在任何字符.

这不是检查子字符串,而是检查集合中的字符.

我能做到这一点:

my_str.find( "/" ) or my_str.find( "\\" ) or my_str.find( "?" )
Run Code Online (Sandbox Code Playgroud)

但它非常丑陋且效率低下.

有没有更好的办法?

python

8
推荐指数
3
解决办法
8641
查看次数

具有负参数的Math.Round

所有,

我试图将Borland C++代码转换为C#.在旧代码中,我看到以下内容:

double a = RoundTo( b, -2 );
Run Code Online (Sandbox Code Playgroud)

看看Borland文档,我看到RoundTo()接受正面和负面参数的精度.正数表示为10 ^ n,负数为10 ^ -n.

看看Math.RoundTo()的C#文档,我找不到它是否会接受负数来表示精度的参考.并且所有样本都带有正数.

在这种情况下转换代码的正确方法是什么?我应该忘记这个标志并写下:

double a = Math.Round( b, 2 );
Run Code Online (Sandbox Code Playgroud)

谢谢.

c# c++ rounding

7
推荐指数
2
解决办法
5423
查看次数

获取丰富编辑库的版本

全部,

是否可以获得程序使用的 RichEdit 控件的版本?

| Version    | Class name    | Library      | Shipped with    | New features
|------------|---------------|--------------|-----------------|    
| 1.0        | "RICHEDIT"    | Riched32.dll | Windows 95      |
| 2.0        | "RichEdit20W" | Riched20.dll | Windows 98      | ITextDocument
| 3.0        | "RichEdit20W" | Riched20.dll | Windows 2000    | ITextDocument2
| 3.1        | "RichEdit20W" | Riched20.dll | Server 2003     |
| 4.1        | "RICHEDIT50"  | Msftedit.dll | Windows XP SP1  | tomApplyTmp
| 7.5        | "RICHEDIT50"  | Msftedit.dll | Windows …
Run Code Online (Sandbox Code Playgroud)

dll version richedit

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

将对象正确移动到废纸篓

在Cocoa上看起来有很多方法可以将文件/文件夹目录移动到垃圾箱:

  1. [[[NSWorkspace sharedWorkspace] performFileOperation:NSWorkspaceRecycleOperation]
  2. [[NSWorkspace sharedWorkspace] recycleURLs:]
  3. [NSFileManager trashItemAtURL:]
  4. [NSFileManager removeItemAtPath:]
  5. [NSFileManager removeItemAtURL:]

通过阅读此处的解释或官方Apple文档的链接,了解区别是很好的.

此外,如果有人知道将文件/非空目录移动到垃圾箱的通用方法,那么很高兴知道.

directory macos cocoa recycle-bin file-management

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

如何将InputStream转换为InputSource?

所有,

我写了一个简单的SAX XML解析器.它工作,我用本地XML文件测试它.这是我的代码:

SAXParserFactory spf = SAXParserFactory.newInstance();
XMLParser xmlparser = null;
try
{
    SAXParser parser = spf.newSAXParser();
    XMLReader reader = parser.getXMLReader();
    xmlparser = new XMLParser();
    reader.setContentHandler( xmlparser );
    reader.parse( new InputSource( getResources().openRawResource( R.raw.categories ) ) );
Run Code Online (Sandbox Code Playgroud)

现在我需要从网站上读取这个XML文件.我正在尝试的代码是:

public InputStream getXMLFile()
{
    URL url = new URL("http://example.com/test.php?param=0");
    InputStream stream = url.openStream();
    Document doc = docBuilder.parse(stream);
}
reader.parse( new Communicator().getXMLFile() );
Run Code Online (Sandbox Code Playgroud)

我收到了编译错误

"方法解析(InputSource)不适用于参数(InputStream)".

我需要帮助搞清楚我需要什么.

谢谢.

java xml sax inputstream

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