我正在使用set中的对,并希望打印值,并且我的编译器始终在“代码1”中显示错误,但在“代码2”中成功运行。
我知道,这两个过程在没有配对的情况下访问一个集合是相同的,但是我在使用配对到集合中时遇到了问题。
我正在使用Windows 10 + Intel和“代码块” IDE。
代码1:
import java.sql.Connection;
import java.sql.DriverManager;
public class databaseConnection {
public static void main(String[] args) throws Exception {
getConnection();
}
public static Connection getConnection() throws Exception {
try {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/dbase";
String username = "root";
String password = "root";
Class.forName(driver);
Connection conn = DriverManager.getConnection(url,
username, password);
System.out.println("Connected.");
return conn;
} catch (Exception e) {
System.out.println(e);
}
return null;
}
}
代码2:
set < pair< int,int> >::iterator it;
for(it=st.begin();it!=st.end();it++){
cout << *(it.first) << " " << *(it.second) << endl ;//error shows here
}
在“代码2”中,我的程序成功运行,但在“代码1”中,它显示了指向注释行的错误。
答案 0 :(得分:3)
it
是引用一对的迭代器,要访问该对,您需要先取消引用该迭代器。
cout << (*it).first << " " << (*it).second << endl ;
或更佳
cout << it->first << " " << it->second << endl ;
编辑:如果您有c++17
支持。
for(auto [first, second] : st)
std::cout<<first<<" "<<second;