小编Niv*_*tha的帖子

如何在c ++映射中迭代一组特定的键?

我正在迭代C++地图.假设我想获取除第一个之外的地图中存在的键.键在地图中排序.因此我想到使用这样的东西:

map<int, int> table;
for( auto i = table.begin()+2; i != table.end(); i++ )
  cout<<i->first<<"\t"<<i->second<<endl;
Run Code Online (Sandbox Code Playgroud)

虽然这适用于矢量,但由于没有为地图实现"+"运算符,因此会引发地图错误.实现结果的一种方法是:

auto i = table.begin();
int count = 0;
while( count < 2 && i != table.end() ){
  count++;
  i++;
}
for( ; i!=table.end(); i++ )
  cout<<i->first<<"\t"<<i->second<<endl;
Run Code Online (Sandbox Code Playgroud)

有没有其他有效的方法来实现这一点?

c++ dictionary stl c++11

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

如何在c中使用qsort比较C++字符串?

我试着学习c-library的qsort功能stdlib.这甚至提供c++.但我不明白如何使用它们来排序c++字符串.我不确定sizeof()操作员的参数应该是什么,以及我的compare_str代码是否正确.我试过这段代码:

    #include<iostream>
    #include<cstdlib>
    using namespace std;
    #include<string>

    int compare_str( const void *a, const void *b){
       string  obj = (const char*)a;
       string obj1 = (const char*)b;
       return obj.compare(obj1);
    }
    int main(){
        string obj[4] = {"fine", "ppoq", "tri", "get"};
        qsort(obj, 4, sizeof(obj[0].length()), compare_str);
        for( int i=0; i<4; i++)
            cout<<obj[i]<<endl;
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

我的输出是:

ppoq
tri
get
fine
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚错误.请帮忙.

c++ string qsort

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

使用java从字符列表中删除数字

我想显示字符列表中出现的数字,然后删除该数字.这是我的代码:

包心房;

import java.util.ArrayList;
import java.util.ListIterator;

public class MyTrials {
    public static void main(String[] args) {
    ArrayList<Character> list = new ArrayList<Character>();
    list.add('a');
    list.add('1');
    list.add('5');
    System.out.println(list.size());
    for( ListIterator i = list.listIterator(list.size());  i.hasPrevious();){
        Character c = (Character) i.previous();
        if( Character.isDigit(c)){
            System.out.println(c + " is a digit");
            list.remove(c);
        }
    }
    System.out.println(list.size());
}
}
Run Code Online (Sandbox Code Playgroud)

这是错误消息:

3
5 is a digit
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$ListItr.previous(AbstractList.java:386)
at mytrials.MyTrials.main(MyTrials.java:27)
Java Result: 1
Run Code Online (Sandbox Code Playgroud)

导致此错误的原因是什么以及如何纠正.

java

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

scanf读取格式化输入

我正在尝试阅读该类型的输入:

[Some text] (x,y)
Run Code Online (Sandbox Code Playgroud)

我需要在整数中存储x,y.

我试过以下代码:

#include<iostream>
#include <cstdio>
using namespace std;

int main(){
    char temp[20];
    int x1, x2;
    scanf("%[^(]%d,%d)", temp, &x1, &x2);
    printf("%s %d %d", temp,x1,x2);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是存储在x1和x2中的整数总是0.这是我得到的输出:

this is a trial (8,6)
this is a trial  0 0
Run Code Online (Sandbox Code Playgroud)

错误是什么?

c c++ debugging

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

标签 统计

c++ ×3

c ×1

c++11 ×1

debugging ×1

dictionary ×1

java ×1

qsort ×1

stl ×1

string ×1