月曜日, 7月 16, 2012

cygwin 上でGCC 4.6.3 を導入して range-based-for を使う

range-based-for を使いたくて、g++4.6.3 にアップグレードしました。

cygwin の最新版は 4.5で、range-based-for は実装されていません。

[windows][cygwin]最新のg++コンパイラをCygwin上で導入する

コンパイルには ↑ このページを参照させていただきました。

↓ ソースはここからダウンロードできます。

GCC miror sites

 range-based-for を使ったコードを以下に示します。

#include<iostream>
using namespace std;
int main()
{
  int arraytest[5]={1,2,3,4,5};
  for(int i:arraytest)
    cout<<i;
  cout<<endl;
  for(int &i:arraytest)
    i=0;
  for(int i:arraytest)
    cout<<i;
}
コンパイラオプションは以下の通り。
$> g++ -std=c++0x range.cc

日曜日, 7月 15, 2012

chronoの使い方のメモ。

c++11で定義されているchronoの使い方のメモ。
#include <iostream>
#include <chrono>

int main()
{
  auto tp=std::chrono::system_clock::time_point();
  std::time_t t=std::chrono::system_clock::to_time_t(tp);
  std::cout << std::ctime(&t)<<std::endl;

  std::chrono::seconds sec(10);
  std::chrono::minutes min(3);
  auto result=sec+min;
  std::cout << result.count() << std::endl;
}
コンパイラのオプションは以下の通り。
/usr/bin/g++-4 -std=c++0x chrono.cpp
c++11ではラムダ式も使えます。
std::cout << [](int x, int y){return x+y;}(1,2) << std::endl;

土曜日, 7月 14, 2012

Java 5.0 可変長パラメータとfor-each

メモのために可変長パラメータとfor-eachを使ったコードを載せておきます。

public class VarLen
{
    int sum(int ... list)
    {
 int s=0;
 for(int i:list)
     {
  s+=i;
     }
 return s;
    }

    public static void main(String args[])
    {
 VarLen varLen=new VarLen();
 System.out.println(varLen.sum(1,2,3,4,5,6,7,8,9,10));
    }
}

Qt: 外部プログラムを起動する

  Qt/C++ のアプリは、外部へ直接アクセスできます。これはネットアプリでは不可能な Qt のメリットです。 外部プログラムを起動することもできます。QProcess::startDetached() を使うと独立したプロセスを立ち上げることができます。 この QProces...