我正在迭代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-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)
我无法弄清楚错误.请帮忙.
我想显示字符列表中出现的数字,然后删除该数字.这是我的代码:
包心房;
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)
导致此错误的原因是什么以及如何纠正.
我正在尝试阅读该类型的输入:
[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)
错误是什么?