锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 涓錛氫嬌鐢–entOS甯哥敤鍛戒護鏌ョ湅cpu more /proc/cpuinfo | grep "model name" 浜岋細浣跨敤CentOS甯哥敤鍛戒護鏌ョ湅鍐呭瓨 grep MemTotal /proc/meminfo grep MemTotal /proc/meminfo | cut -f2 -d: free -m |grep "Mem" | awk '{print $2}' 涓夛細浣跨敤CentOS甯哥敤鍛戒護鏌ョ湅cpu鏄?2浣嶈繕鏄?4浣?/strong> 鏌ョ湅CPU浣嶆暟(32 or 64) 鍥涳細浣跨敤CentOS甯哥敤鍛戒護鏌ョ湅褰撳墠linux鐨勭増鏈?/strong> more /etc/redhat-release 浜旓細浣跨敤CentOS甯哥敤鍛戒護鏌ョ湅鍐呮牳鐗堟湰 uname -r 鍏細浣跨敤CentOS甯哥敤鍛戒護鏌ョ湅褰撳墠鏃墮棿 date涓婇潰宸茬粡浠嬬粛濡備綍鍚屾鏃墮棿浜?/p>
涓冿細浣跨敤CentOS甯哥敤鍛戒護鏌ョ湅紜洏鍜屽垎鍖?/strong> df -h 鍏細浣跨敤CentOS甯哥敤鍛戒護鏌ョ湅瀹夎鐨勮蔣浠跺寘 鏌ョ湅緋葷粺瀹夎鐨勬椂鍊欒鐨勮蔣浠跺寘 涔濓細浣跨敤CentOS甯哥敤鍛戒護鏌ョ湅閿洏甯冨眬 cat /etc/sysconfig/keyboard 鍗侊細浣跨敤CentOS甯哥敤鍛戒護鏌ョ湅selinux鎯呭喌 sestatus 鍗佷竴錛氫嬌鐢–entOS甯哥敤鍛戒護鏌ョ湅ip錛宮ac鍦板潃 鍦╥fcfg-eth0 鏂囦歡閲屼綘鍙互鐪嬪埌mac錛岀綉鍏崇瓑淇℃伅銆?nbsp; ifconfig cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep IPADDR cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep IPADDR | cut -f2 -d= ifconfig eth0 |grep "inet addr:" |awk '{print $2}'|cut -c 6- ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}' 鏌ョ湅緗戝叧 cat /etc/sysconfig/network 鏌ョ湅dns cat /etc/resolv.conf 鍗佷簩錛氫嬌鐢–entOS甯哥敤鍛戒護鏌ョ湅榛樿璇█ 鍗佷簩錛氫嬌鐢–entOS甯哥敤鍛戒護鏌ョ湅鎵灞炴椂鍖哄拰鏄惁浣跨敤UTC鏃墮棿 cat /etc/sysconfig/clock 鍗佷笁錛氫嬌鐢–entOS甯哥敤鍛戒護鏌ョ湅涓繪満鍚?/strong> hostname 鍗佸洓錛氫嬌鐢–entOS甯哥敤鍛戒護鏌ョ湅寮鏈鴻繍琛屾椂闂?/strong> uptime vmstat 1 -S m procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 233 199 778 0 0 4 25 1 1 3 0 96 0 0 0 0 0 233 199 778 0 0 0 0 1029 856 13 1 86 0 0
]]>
grep "model name" /proc/cpuinfo
[root@localhost /]# grep "CPU" /proc/cpuinfo
model name : Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz
model name : Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz
濡傛灉瑙夊緱闇瑕佺湅鐨勬洿鍔犺垝鏈?br>grep "model name" /proc/cpuinfo | cut -f2 -d:
getconf LONG_BIT
cat /etc/redhat-release
uname -a
fdisk -l
涔熷彲浠ユ煡鐪嬪垎鍖?br>du -sh
鍙互鐪嬪埌鍏ㄩ儴鍗犵敤鐨勭┖闂?br>du /etc -sh
鍙互鐪嬪埌榪欎釜鐩綍鐨勫ぇ灝?/p>
cat -n /root/install.log
more /root/install.log | wc -l
鏌ョ湅鐜板湪宸茬粡瀹夎浜嗛偅浜涜蔣浠跺寘
rpm -qa
rpm -qa | wc -l
yum list installed | wc -l
涓嶈繃寰堝鎬紝鎴戦氳繃rpm錛屽拰yum榪欎袱縐嶆柟寮忔煡璇㈢殑瀹夎杞歡鍖咃紝鏁伴噺騫朵笉涓鏍楓傛病鏈夋壘鍒板師鍥犮?/p>
cat /etc/sysconfig/keyboard | grep KEYTABLE | cut -f2 -d=
sestatus | cut -f2 -d:
cat /etc/sysconfig/selinux
echo $LANG $LANGUAGE
cat /etc/sysconfig/i18n
cat /etc/sysconfig/network
淇敼涓繪満鍚嶅氨鏄慨鏀硅繖涓枃浠訛紝鍚屾椂鏈濂戒篃鎶奾ost鏂囦歡涔熶慨鏀廣?/p>
09:44:45 up 67 days, 23:32, ...
鐪嬫潵鍒氭墠紜疄鏄綉孌電殑闂錛屾垜鐨勬満鍣ㄨ繕鏄?7澶╁墠寮鏈虹殑銆?br>#緋葷粺璧勬簮浣跨敤鎯呭喌
]]>
1. 鎿嶄綔緋葷粺鐨勫畨瑁呯渷鐣ワ紝娉ㄦ剰閰嶇疆鍥懼艦鐣岄潰
2. 楠岃瘉瀹夎
閫氳繃榪愯浠ヤ笅鍛戒護媯鏌ュ唴鏍哥増鏈細
uname –r
鍏朵粬鎵闇紼嬪簭鍖呯殑鐗堟湰錛堟垨鏇撮珮鐗堟湰錛夛細
gcc-3.2.3-2
make-3.79
binutils-2.11
openmotif-2.2.2-16
setarch-1.3-1
compat-db-4.0.14.5
浠ヤ笂涓哄繀闇鐨勭▼搴忓寘
compat-gcc-7.3-2.96.122
compat-gcc-c++-7.3-2.96.122
compat-libstdc++-7.3-2.96.122
compat-libstdc++-devel-7.3-2.96.122
浠ヤ笂涓哄彲閫夌▼搴忓寘錛屾渶濂藉畨瑁呬笂
瑕佹煡鐪嬬郴緇熶笂瀹夎浜嗚繖浜涚▼搴忓寘鐨勫摢浜涚増鏈紝浠?root 鐢ㄦ埛韜喚榪愯浠ヤ笅鍛戒護錛?/p>
rpm -q gcc make binutils openmotif setarch compat-db compat-gcc compat-gcc-c++ compat-libstdc++ compat-libstdc++-devel
絎簩閮ㄥ垎錛氶拡瀵?nbsp;Oracle 閰嶇疆 Linux
1. 楠岃瘉緋葷粺瑕佹眰
瑕侀獙璇佺郴緇熸槸鍚︽弧瓚?Oracle 10g 鏁版嵁搴?/a>鐨勬渶浣庤姹傦紝浠?root 鐢ㄦ埛韜喚鐧誨綍騫惰繍琛屼互涓嬪懡浠ゃ?/p>
瑕佹煡鐪嬪彲鐢?RAM 鍜屼氦鎹㈢┖闂村ぇ灝忥紝榪愯浠ヤ笅鍛戒護錛?/p>
grep MemTotal /proc/meminfo
grep SwapTotal /proc/meminfo
鎵闇鏈灝?RAM 涓?512MB錛岃屾墍闇鏈灝忎氦鎹㈢┖闂翠負 1GB.瀵逛簬 RAM 灝忎簬鎴栫瓑浜?2GB 鐨勭郴緇燂紝浜ゆ崲絀洪棿搴斾負 RAM 鏁伴噺鐨勪袱鍊嶏紱瀵逛簬 RAM 澶т簬
2GB 鐨勭郴緇燂紝浜ゆ崲絀洪棿搴斾負 RAM 鏁伴噺鐨勪竴鍒頒袱鍊嶃?/p>
Oracle 10g 杞歡榪橀渶瑕?2.5GB 鐨勫彲鐢ㄧ鐩樼┖闂達紝鑰屾暟鎹簱鍒欏彟闇 1.2GB
鐨勫彲鐢ㄧ鐩樼┖闂淬?tmp 鐩綍鑷沖皯闇瑕?400MB 鐨勫彲鐢ㄧ┖闂淬傝媯鏌ョ郴緇熶笂鐨勫彲鐢ㄧ鐩樼┖闂達紝榪愯浠ヤ笅鍛戒護錛?/p>
df –h
2. 鍒涘緩 Oracle 緇勫拰鐢ㄦ埛甯愭埛
鎺ヤ笅鏉ワ紝鍒涘緩鐢ㄤ簬瀹夎鍜岀淮鎶?Oracle 10g 杞歡鐨?Linux 緇勫拰鐢ㄦ埛甯愭埛銆傜敤鎴峰笎鎴峰皢縐頒負 oracle錛岃岀粍灝嗙О涓?oinstall 鍜?dba.浠?
root 鐢ㄦ埛韜喚鎵ц浠ヤ笅鍛戒護錛?/p>
/usr/sbin/groupadd oinstall
/usr/sbin/groupadd dba
/usr/sbin/useradd -m -g oinstall -G dba oracle
璁劇疆 oracle 甯愭埛鐨勫彛浠わ細
passwd oracle
3. 鍒涘緩鐩綍
鐜板湪錛屽垱寤哄瓨鍌?Oracle 10g 杞歡鍜屾暟鎹簱鏂囦歡鐨勭洰褰曘傛湰鎸囧崡鍦ㄥ垱寤虹洰褰曠粨鏋勬椂鎵鐢ㄧ殑鍛藉悕鎯緥絎﹀悎鏈浣崇伒媧葷粨鏋?錛圤FA錛?瑙勮寖銆傛湁鍏?OFA
鏍囧噯鐨勬洿澶氫俊鎭紝璇峰弬闃呴拡瀵?UNIX 緋葷粺鐨?Oracle 鏁版嵁搴?10g 瀹夎鎸囧崡 鐨勯檮褰?D.
浠ヤ笅鍋囪鍦ㄦ牴鏂囦歡緋葷粺涓垱寤虹洰褰曘傝繖鏍峰仛鏄負浜嗙畝渚胯搗瑙侊紝涓嶅緩璁皢鍏朵綔涓洪氱敤鍋氭硶銆傝繖浜涚洰褰曢氬父琚垱寤轟負鍗曠嫭鐨勬枃浠剁郴緇熴?/p>
浠?root 鐢ㄦ埛韜喚鎵ц浠ヤ笅鍛戒護錛?/p>
mkdir -p /u01/app/oracle
mkdir -p /u02/oradata
chown -R oracle錛歰install /u01/app/oracle /u02/oradata
chmod -R 775 /u01/app/oracle /u02/oradata
4. 閰嶇疆 Linux 鍐呮牳鍙傛暟
Linux 鍐呮牳闈炲父鍑鴻壊銆備笌澶у鏁板叾浠?*NIX 緋葷粺涓嶅悓錛孡inux
鍏佽鍦ㄧ郴緇熷惎鍔ㄥ拰榪愯鏃朵慨鏀瑰ぇ澶氭暟鍐呮牳鍙傛暟銆傚畬鎴愬唴鏍稿弬鏁版洿鏀瑰悗涓嶅繀閲嶆柊鍚姩緋葷粺銆侽racle 鏁版嵁搴?10g
闇瑕佷互涓嬫墍紺虹殑鍐呮牳鍙傛暟璁劇疆銆傚叾涓粰鍑虹殑鏄渶灝忓鹼紝鍥犳濡傛灉鎮ㄧ殑緋葷粺浣跨敤鐨勫艱緝澶э紝鍒欎笉瑕佹洿鏀瑰畠銆?/p>
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
濡傛灉鎮ㄦ紜殑瀹夎浜唋inux錛屼笖鍐呮牳鍙傛暟鍏ㄩ儴閲囩敤榛樿鍊鹼紝鍒欏彧闇鍦ㄤ互 root 鐢ㄦ埛韜喚鐧誨綍鍚庢墽琛屼笅鍛戒護銆?/p>
cat >> /etc/sysctl.conf <<EOF
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
EOF
/sbin/sysctl –p
浠?root 鐢ㄦ埛韜喚榪愯浠ヤ笅鍛戒護鏉ラ獙璇佹偍鐨勮緗細
/sbin/sysctl -a | grep shm
/sbin/sysctl -a | grep sem
/sbin/sysctl -a | grep file-max
/sbin/sysctl -a | grep ip_local_port_range
濡傛灉緋葷粺鐨勫弬鏁拌緗殑姣斾笂榪板弬鏁板煎皬錛屽垯緙栬緫 /etc/sysctl.conf 鏂囦歡錛屾坊鍔犳垨鏇存敼榪欎簺鍙傛暟銆傚畬鎴愬悗錛岃繍琛屼互涓嬪懡浠ゆ縺媧繪洿鏀癸細
/sbin/sysctl –p
5. 涓?oracle 鐢ㄦ埛璁劇疆 Shell 闄愬埗
Oracle 寤鴻瀵規瘡涓?Linux 甯愭埛鍙互浣跨敤鐨勮繘紼嬫暟鍜屾墦寮鐨勬枃浠舵暟璁劇疆闄愬埗銆傝榪涜榪欎簺鏇存敼錛屼互 root 鐢ㄦ埛鐨勮韓浠芥墽琛屼笅鍒楀懡浠わ細
cat >> /etc/security/limits.conf <<EOF
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
EOF
cat >> /etc/pam.d/login <<EOF
session required /lib/security/pam_limits.so
EOF
cat >> /etc/profile <<EOF
if [ \$USER = "oracle" ]錛?then
if [ \$SHELL = "/bin/ksh" ]錛?then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
EOF
cat >> /etc/csh.login <<EOF
if 錛?\$USER == "oracle" 錛?then
limit maxproc 16384
limit descriptors 65536
umask 022
endif
EOF
6. oracle 鐢ㄦ埛鐨勭幆澧冨彉閲?/p>
瑕佷嬌鐢?Oracle 浜у搧錛屽簲璇ユ垨蹇呴』璁劇疆鍑犱釜鐜鍙橀噺銆傚浜庢暟鎹簱鏈嶅姟鍣?/a>錛屽緩璁緗互涓嬬幆澧冨彉閲忥細
ORACLE_BASE
ORACLE_HOME
ORACLE_SID
PATH
濡傛灉鎮ㄥ湪鍚屼竴鏈嶅姟鍣ㄤ笂瀹夎浜嗗涓?Oracle 浜у搧鎴栨暟鎹簱錛屽垯 ORACLE_HOME銆丱RACLE_SID 鍜?PATH
鍙橀噺鍙兘浼氭洿鏀廣侽RACLE_BASE 鍙橀噺涓嶅簲鏇存敼錛屽茍鍙互鍦ㄩ渶瑕佹椂鍦ㄦ偍鐨勭櫥褰曢厤緗枃浠朵腑璁劇疆瀹冦侽racle 鎻愪緵浜嗕竴涓О浣?oraenv
鐨勫疄鐢ㄧ▼搴忔潵璁劇疆鍏朵粬鍙橀噺銆?/p>
浠?oracle 韜喚鐧誨綍錛屽茍閫氳繃鍦?.bash_profile涓坊鍔犱互涓嬭錛?/p>
TMP=/tmp錛?/p>
export TMP
TMPDIR=$TMP錛?/p>
export TMPDIR
ORACLE_BASE=/u01/app/oracle錛?/p>
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/oracle/product/10.2.0/db_1錛?/p>
export ORACLE_HOME
ORACLE_SID=mydb錛?/p>
export ORACLE_SID
ORACLE_TERM=xterm錛?/p>
export ORACLE_TERM
PATH=/usr/sbin錛?PATH錛?/p>
export PATH
PATH=$ORACLE_HOME/bin錛?PATH錛?/p>
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib錛?lib錛?usr/lib錛?/p>
export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE錛?ORACLE_HOME/jlib錛?ORACLE_HOME/rdbms/jlib錛?/p>
export CLASSPATH
NLS_LANG="Simplified Chinese_china".ZHS16GBK錛?/p>
export NLS_LANG
姝ゆ洿鏀瑰皢鍦ㄦ偍涓嬫鐧誨綍鍒?oracle 甯愭埛鏃剁敓鏁堛?/p>
絎笁閮ㄥ垎錛氬畨瑁?nbsp;Oracle
1.瀹夎杞歡
浣跨敤 oracle 甯愭埛鐧誨綍銆?/p>
灝嗙洰褰曟洿鏀逛負 Oracle 10g 杞歡瑙e帇緙╁埌鐨勪綅緗?/p>
鍚姩 Oracle 閫氱敤瀹夎紼嬪簭銆?/p>
$ ./runInstaller
1錛夋榪?/p>
Ø 鍗曞嚮 Next.
2錛夋寚瀹氭竻鍗曠洰褰曞拰璇佷功 Ø 濡傛灉鎮ㄤ竴鐩村湪渚濆驚鏈寚鍗椾腑鐨勬楠わ紝鍒欎嬌鐢ㄩ粯璁ゅ煎嵆鍙傚惁鍒欙紝緙栬緫娓呭崟鐩綍鐨勮礬寰勶紝浠ユ寚鍚戞紜洰褰曘?/p>
Ø 鎿嶄綔緋葷粺緇勫悕縐板簲涓?oinstall.
3錛夊鏋滆繖鏄嬈″湪姝ゆ満鍣ㄤ笂瀹夎 Oracle錛屽垯鎮ㄥ皢鏀跺埌涓涓脊鍑虹獥鍙o紝鎻愮ず闇瑕佷互 root 鐢ㄦ埛韜喚榪愯 orainstRoot.sh 鑴氭湰銆備互 root
鐢ㄦ埛韜喚鐧誨綍錛屾洿鏀瑰埌紿楀彛涓寚瀹氱殑鐩綍錛屾墽琛岃鑴氭湰錛岀劧鍚庣戶緇搷浣溿?/p>
4錛夋寚瀹氭枃浠朵綅緗?/p>
Ø 濡傛灉鎮ㄤ竴鐩村湪渚濆驚鏈寚鍗椾腑鐨勬楠わ紝鍒欎嬌鐢ㄩ粯璁ゅ煎嵆鍙傚惁鍒欙紝鍦ㄧ戶緇搷浣滃墠紜繚婧愯礬寰勫拰鐩爣璺緞姝g‘銆?/p>
5錛夐夋嫨瀹夎綾誨瀷 Ø 鎺ュ彈榛樿鍊?Enterprise Edition.
6錛変笌鐗瑰畾浜у搧鐩稿叧鐨勫厛鍐蟲潯浠剁殑媯鏌?/p>
Ø
濡傛灉鎮ㄤ竴鐩村湪渚濆驚鏈寚鍗椾腑鐨勬楠わ紝鍒欐墍鏈夋鏌ラ兘搴旈『鍒╅氳繃銆傚鏋滀竴涓垨澶氫釜媯鏌ュけ璐ワ紝鍒欏湪緇х畫鎿嶄綔鍓嶇籂姝h闂銆?/p>
7錛夐夋嫨鏁版嵁搴?/a>閰嶇疆 Ø 鎺ュ彈榛樿鍊?Create a starter database 鍜?General Purpose.
8錛夋寚瀹氭暟鎹簱閰嶇疆閫夐」 Ø 杈撳叆鏁版嵁搴撶殑鍏ㄥ眬鏁版嵁搴撳悕縐般傝鍚嶇О搴斿寘鍚?ORACLE_SID 鍜?a style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(48,128,203); PADDING-TOP: 0px; BORDER-BOTTOM: rgb(104,195,238) 1px dotted; TEXT-DECORATION: none" target="_blank">鏈嶅姟鍣?/a>鍩熷悕錛堜緥濡傦紝demo1.orademo.org錛屽叾涓?demo1 鏄?ORACLE_SID錛宱rademo.org
鏄煙鍚嶏級銆?/p>
Ø 杈撳叆鍏ㄥ眬鏁版嵁搴撳悕縐版椂錛孲ID 妗嗗皢鑷姩濉厖銆?/p>
Ø 鎺ュ彈榛樿鐨勬暟鎹簱瀛楃闆嗐?/p>
Ø 閫夋嫨 Create database with sample schemas.
9錛夐夋嫨鏁版嵁搴撶鐞嗛夐」 Ø 閫夋嫨 Use Database Control for Database Management.
10錛夋寚瀹氭暟鎹簱鏂囦歡瀛樺偍閫夐」 Ø 閫夋嫨 File System錛岀劧鍚庤緭鍏ユ暟鎹簱鏂囦歡瑕佷嬌鐢ㄧ殑璺緞鍚嶏紙鍦ㄦ湰渚嬩腑涓?/u02/oradata錛夈?/p>
11錛夋寚瀹氬浠藉拰鎭㈠閫夐」 Ø 閫夋嫨 Do not enable Automated backups.
12錛夋寚瀹氭暟鎹簱妯″紡鍙d護 Ø 閫夋嫨 Use the same password for all the accounts. Ø 閫夋嫨涓涓彛浠わ紝鐒跺悗杈撳叆涓ゆ榪涜紜銆?/p>
13錛夋憳瑕?/p>
Ø 鏄劇ず宸插畨瑁呬駭鍝佺殑鎽樿銆?/p>
鍗曞嚮 Install.
]]>
榪欑瘒鏂囩珷鐨勭洰鐨勬槸涓轟簡浠嬬粛std::vector錛屽浣曟伆褰撳湴浣跨敤瀹冧滑鐨勬垚鍛樺嚱鏁扮瓑鎿嶄綔銆傛湰鏂囦腑榪樿璁轟簡鏉′歡鍑芥暟鍜屽嚱鏁版寚閽堝湪榪唬綆楁硶涓嬌鐢紝濡傚湪remove_if()鍜?/span>for_each()涓殑浣跨敤銆傞氳繃闃呰榪欑瘒鏂囩珷璇昏呭簲璇ヨ兘澶熸湁鏁堝湴浣跨敤vector瀹瑰櫒錛岃屼笖搴旇涓嶄細鍐嶅幓浣跨敤C綾誨瀷鐨勫姩鎬佹暟緇勪簡銆?/span>
Vector鎬昏
vector鏄?/span>C++鏍囧噯妯℃澘搴撲腑鐨勯儴鍒嗗唴瀹癸紝瀹冩槸涓涓鍔熻兘鐨勶紝鑳藉鎿嶄綔澶氱鏁版嵁緇撴瀯鍜岀畻娉曠殑妯℃澘綾誨拰鍑芥暟搴撱?/span>vector涔嬫墍浠ヨ璁や負鏄竴涓鍣紝鏄洜涓哄畠鑳藉鍍忓鍣ㄤ竴鏍峰瓨鏀懼悇縐嶇被鍨嬬殑瀵硅薄錛岀畝鍗曞湴璇達紝vector鏄竴涓兘澶熷瓨鏀句換鎰忕被鍨嬬殑鍔ㄦ佹暟緇勶紝鑳藉澧炲姞鍜屽帇緙╂暟鎹?/span>
涓轟簡鍙互浣跨敤vector錛屽繀欏誨湪浣犵殑澶存枃浠朵腑鍖呭惈涓嬮潰鐨勪唬鐮侊細
|
#include <vector> |
vector灞炰簬std鍛藉悕鍩熺殑錛屽洜姝ら渶瑕侀氳繃鍛藉悕闄愬畾錛屽涓嬪畬鎴愪綘鐨勪唬鐮侊細
|
using std::vector; vector<int> vInts; |
鎴栬呰繛鍦ㄤ竴璧鳳紝浣跨敤鍏ㄥ悕錛?/span>
|
std::vector<int> vInts; |
寤鴻浣跨敤鍏ㄥ眬鐨勫懡鍚嶅煙鏂瑰紡錛?/span>
|
using namespace std; |
鍦ㄥ悗闈㈢殑鎿嶄綔涓叏灞鐨勫懡鍚嶅煙鏂瑰紡浼氶犳垚涓浜涢棶棰樸?/span>vector瀹瑰櫒鎻愪緵浜嗗緢澶氭帴鍙o紝鍦ㄤ笅闈㈢殑琛ㄤ腑鍒楀嚭vector鐨勬垚鍛樺嚱鏁板拰鎿嶄綔銆?/span>
Vector鎴愬憳鍑芥暟
|
鍑芥暟 |
琛ㄨ堪 |
|
c.assign(beg,end) c.assign(n,elem) |
灝?/span>[beg; end)鍖洪棿涓殑鏁版嵁璧嬪肩粰c銆?/span> 灝?/span>n涓?/span>elem鐨勬嫹璐濊祴鍊肩粰c銆?/span> |
|
c.at(idx) |
浼犲洖绱㈠紩idx鎵鎸囩殑鏁版嵁錛屽鏋?/span>idx瓚婄晫錛屾姏鍑?/span>out_of_range銆?/span> |
|
c.back() |
浼犲洖鏈鍚庝竴涓暟鎹紝涓嶆鏌ヨ繖涓暟鎹槸鍚﹀瓨鍦ㄣ?/span> |
|
c.begin() |
浼犲洖榪唬鍣ㄩ噸鐨勫彲涓涓暟鎹?/span> |
|
c.capacity() |
榪斿洖瀹瑰櫒涓暟鎹釜鏁般?/span> |
|
c.clear() |
縐婚櫎瀹瑰櫒涓墍鏈夋暟鎹?/span> |
|
c.empty() |
鍒ゆ柇瀹瑰櫒鏄惁涓虹┖銆?/span> |
|
c.end() |
鎸囧悜榪唬鍣ㄤ腑鐨勬渶鍚庝竴涓暟鎹湴鍧銆?/span> |
|
c.erase(pos) c.erase(beg,end) |
鍒犻櫎pos浣嶇疆鐨勬暟鎹紝浼犲洖涓嬩竴涓暟鎹殑浣嶇疆銆?/span> 鍒犻櫎[beg,end)鍖洪棿鐨勬暟鎹紝浼犲洖涓嬩竴涓暟鎹殑浣嶇疆銆?/span> |
|
c.front() |
浼犲洖鍦頒竴涓暟鎹?/span> |
|
get_allocator |
浣跨敤鏋勯犲嚱鏁拌繑鍥炰竴涓嫹璐濄?/span> |
|
c.insert(pos,elem) c.insert(pos,n,elem) c.insert(pos,beg,end) |
鍦?/span>pos浣嶇疆鎻掑叆涓涓?/span>elem鎷瘋礉錛屼紶鍥炴柊鏁版嵁浣嶇疆銆?/span> 鍦?/span>pos浣嶇疆鎻掑叆n涓?/span>elem鏁版嵁銆傛棤榪斿洖鍊箋?/span> 鍦?/span>pos浣嶇疆鎻掑叆鍦?/span>[beg,end)鍖洪棿鐨勬暟鎹傛棤榪斿洖鍊箋?/span> |
|
c.max_size() |
榪斿洖瀹瑰櫒涓渶澶ф暟鎹殑鏁伴噺銆?/span> |
|
c.pop_back() |
鍒犻櫎鏈鍚庝竴涓暟鎹?/span> |
|
c.push_back(elem) |
鍦ㄥ熬閮ㄥ姞鍏ヤ竴涓暟鎹?/span> |
|
c.rbegin() |
浼犲洖涓涓嗗悜闃熷垪鐨勭涓涓暟鎹?/span> |
|
c.rend() |
浼犲洖涓涓嗗悜闃熷垪鐨勬渶鍚庝竴涓暟鎹殑涓嬩竴涓綅緗?/span> |
|
c.resize(num) |
閲嶆柊鎸囧畾闃熷垪鐨勯暱搴︺?/span> |
|
c.reserve() |
淇濈暀閫傚綋鐨勫閲忋?/span> |
|
c.size() |
榪斿洖瀹瑰櫒涓疄闄呮暟鎹殑涓暟銆?/span> |
|
c1.swap(c2) swap(c1,c2) |
灝?/span>c1鍜?/span>c2鍏冪礌浜掓崲銆?/span> 鍚屼笂鎿嶄綔銆?/span> |
|
vector<Elem> c vector <Elem> c1(c2) vector <Elem> c(n) vector <Elem> c(n, elem) vector <Elem> c(beg,end) c.~ vector <Elem>() |
鍒涘緩涓涓┖鐨?/span>vector銆?/span> 澶嶅埗涓涓?/span>vector銆?/span> 鍒涘緩涓涓?/span>vector錛屽惈鏈?/span>n涓暟鎹紝鏁版嵁鍧囧凡緙虹渷鏋勯犱駭鐢?/span>銆?/span> 鍒涘緩涓涓惈鏈?/span>n涓?/span>elem鎷瘋礉鐨?/span>vector銆?/span> 鍒涘緩涓涓互[beg;end)鍖洪棿鐨?/span>vector銆?/span> 閿姣佹墍鏈夋暟鎹紝閲婃斁鍐呭瓨銆?/span> |
Vector鎿嶄綔
|
鍑芥暟 |
鎻忚堪 |
|
operator[] |
榪斿洖瀹瑰櫒涓寚瀹氫綅緗殑涓涓紩鐢ㄣ?/span> |
鍒涘緩涓涓?/span>vector
vector瀹瑰櫒鎻愪緵浜嗗縐嶅垱寤烘柟娉曪紝涓嬮潰浠嬬粛鍑犵甯哥敤鐨勩?/span>
鍒涘緩涓涓?/span>Widget綾誨瀷鐨勭┖鐨?/span>vector瀵硅薄錛?/span>
|
vector<Widget> vWidgets; // ------ // | // |- Since vector is a container, its member functions // operate on iterators and the container itself so // it can hold objects of any type. |
鍒涘緩涓涓寘鍚?/span>500涓?/span>Widget綾誨瀷鏁版嵁鐨?/span>vector錛?/span>
|
vector<Widget> vWidgets(500); |
鍒涘緩涓涓寘鍚?/span>500涓?/span>Widget綾誨瀷鏁版嵁鐨?/span>vector錛屽茍涓旈兘鍒濆鍖栦負0錛?/span>
|
vector<Widget> vWidgets(500, Widget(0)); |
鍒涘緩涓涓?/span>Widget鐨勬嫹璐濓細
|
vector<Widget> vWidgetsFromAnother(vWidgets); |
鍚?/span>vector娣誨姞涓涓暟鎹?/span>
vector娣誨姞鏁版嵁鐨勭己鐪佹柟娉曟槸push_back()銆?/span>push_back()鍑芥暟琛ㄧず灝嗘暟鎹坊鍔犲埌vector鐨勫熬閮紝騫舵寜闇瑕佹潵鍒嗛厤鍐呭瓨銆備緥濡傦細鍚?/span>vector<Widget>涓坊鍔?/span>10涓暟鎹紝闇瑕佸涓嬬紪鍐欎唬鐮侊細
|
for(int i= 0;i<10; i++) vWidgets.push_back(Widget(i)); |
鑾峰彇vector涓埗瀹氫綅緗殑鏁版嵁
寰堝鏃跺欐垜浠笉蹇呰鐭ラ亾vector閲岄潰鏈夊灝戞暟鎹紝vector閲岄潰鐨勬暟鎹槸鍔ㄦ佸垎閰嶇殑錛屼嬌鐢?/span>push_back()鐨勪竴緋誨垪鍒嗛厤絀洪棿甯稿父鍐沖畾浜庢枃浠舵垨涓浜涙暟鎹簮銆傚鏋滀綘鎯崇煡閬?/span>vector瀛樻斁浜嗗灝戞暟鎹紝浣犲彲浠ヤ嬌鐢?/span>empty()銆傝幏鍙?/span>vector鐨勫ぇ灝忥紝鍙互浣跨敤size()銆備緥濡傦紝濡傛灉浣犳兂鑾峰彇涓涓?/span>vector v鐨勫ぇ灝忥紝浣嗕笉鐭ラ亾瀹冩槸鍚︿負絀猴紝鎴栬呭凡緇忓寘鍚簡鏁版嵁錛屽鏋滀負絀烘兂璁劇疆涓?/span>-1錛屼綘鍙互浣跨敤涓嬮潰鐨勪唬鐮佸疄鐜幫細
|
int nSize = v.empty() ? -1 : static_cast<int>(v.size()); |
璁塊棶vector涓殑鏁版嵁
浣跨敤涓ょ鏂規硶鏉ヨ闂?/span>vector銆?/span>
1銆?span> vector::at()
2銆?span> vector::operator[]
operator[]涓昏鏄負浜嗕笌C璇█榪涜鍏煎銆傚畠鍙互鍍?/span>C璇█鏁扮粍涓鏍鋒搷浣溿備絾at()鏄垜浠殑棣栭夛紝鍥犱負at()榪涜浜嗚竟鐣屾鏌ワ紝濡傛灉璁塊棶瓚呰繃浜?/span>vector鐨勮寖鍥達紝灝嗘姏鍑轟竴涓緥澶栥傜敱浜?/span>operator[]瀹規槗閫犳垚涓浜涢敊璇紝鎵鏈夋垜浠緢灝戠敤瀹冿紝涓嬮潰榪涜楠岃瘉涓涓嬶細
鍒嗘瀽涓嬮潰鐨勪唬鐮侊細
|
vector<int> v; v.reserve(10);
for(int i=0; i<7; i++) v.push_back(i);
try { int iVal1 = v[7]; // not bounds checked - will not throw int iVal2 = v.at(7); // bounds checked - will throw if out of range } catch(const exception& e) { cout << e.what(); } |
鎴戜滑浣跨敤reserve()鍒嗛厤浜?/span>10涓?/span>int鍨嬬殑絀洪棿錛屼絾騫朵笉娌℃湁鍒濆鍖栥傚涓嬪浘鎵紺猴細

浣犲彲浠ュ湪榪欎釜浠g爜涓皾璇曚笉鍚屾潯浠訛紝瑙傚療瀹冪殑緇撴灉錛屼絾鏄棤璁轟綍鏃朵嬌鐢?/span>at()錛岄兘鏄紜殑銆?/span>
鍒犻櫎vector涓殑鏁版嵁
vector鑳藉闈炲父瀹規槗鍦版坊鍔犳暟鎹紝涔熻兘寰堟柟渚垮湴鍙栧嚭鏁版嵁錛屽悓鏍?/span>vector鎻愪緵浜?/span>erase()錛?/span>pop_back()錛?/span>clear()鏉ュ垹闄ゆ暟鎹紝褰撲綘鍒犻櫎鏁版嵁鐨勬椂鍊欙紝浣犲簲璇ョ煡閬撹鍒犻櫎灝鵑儴鐨勬暟鎹紝鎴栬呮槸鍒犻櫎鎵鏈夋暟鎹紝榪樻槸涓埆鐨勬暟鎹傚湪鑰冭檻鍒犻櫎絳夋搷浣滀箣鍓嶈鎴戜滑闈欎笅鏉ヨ冭檻涓涓嬪湪STL涓殑涓浜涘簲鐢ㄣ?/span>
Remove_if()綆楁硶
鐜板湪鎴戜滑鑰冭檻鎿嶄綔閲岄潰鐨勬暟鎹傚鏋滆浣跨敤remove_if()錛屾垜浠渶瑕佸湪澶存枃浠朵腑鍖呭惈濡備笅浠g爜錛氾細
|
#include <algorithm> |
Remove_if()鏈変笁涓弬鏁幫細
1銆?span>
iterator _First錛氭寚鍚戠涓涓暟鎹殑榪唬鎸囬拡銆?/span>2銆?span>
iterator _Last錛氭寚鍚戞渶鍚庝竴涓暟鎹殑榪唬鎸囬拡銆?/span>3銆?span>
predicate _Pred錛氫竴涓彲浠ュ榪唬鎿嶄綔鐨勬潯浠跺嚱鏁般?/span>
鏉′歡鍑芥暟
鏉′歡鍑芥暟鏄竴涓寜鐓х敤鎴峰畾涔夌殑鏉′歡榪斿洖鏄垨鍚︾殑緇撴灉錛屾槸鏈鍩烘湰鐨勫嚱鏁版寚閽堬紝鎴栬呮槸涓涓嚱鏁板璞°傝繖涓嚱鏁板璞¢渶瑕佹敮鎸佹墍鏈夌殑鍑芥暟璋冪敤鎿嶄綔錛岄噸杞?/span>operator()()鎿嶄綔銆?/span>remove_if()鏄氳繃unary_function緇ф壙涓嬫潵鐨勶紝鍏佽浼犻掓暟鎹綔涓烘潯浠躲?/span>
渚嬪錛屽亣濡備綘鎯充粠涓涓?/span>vector<CString>涓垹闄ゅ尮閰嶇殑鏁版嵁錛屽鏋滃瓧涓蹭腑鍖呭惈浜嗕竴涓鹼紝浠庤繖涓煎紑濮嬶紝浠庤繖涓肩粨鏉熴傞鍏堜綘搴旇寤虹珛涓涓暟鎹粨鏋勬潵鍖呭惈榪欎簺鏁版嵁錛岀被浼間唬鐮佸涓嬶細
|
#include <functional> enum findmodes { FM_INVALID = 0, FM_IS, FM_STARTSWITH, FM_ENDSWITH, FM_CONTAINS }; typedef struct tagFindStr { UINT iMode; CString szMatchStr; } FindStr; typedef FindStr* LPFINDSTR; |
鐒跺悗澶勭悊鏉′歡鍒ゆ柇錛?/span>
|
class FindMatchingString : public std::unary_function<CString, bool> {
public: FindMatchingString(const LPFINDSTR lpFS) : m_lpFS(lpFS) {}
bool operator()(CString& szStringToCompare) const { bool retVal = false;
switch(m_lpFS->iMode) { case FM_IS: { retVal = (szStringToCompare == m_lpFDD->szMatchStr); break; } case FM_STARTSWITH: { retVal = (szStringToCompare.Left(m_lpFDD->szMatchStr.GetLength()) == m_lpFDD->szWindowTitle); break; } case FM_ENDSWITH: { retVal = (szStringToCompare.Right(m_lpFDD->szMatchStr.GetLength()) == m_lpFDD->szMatchStr); break; } case FM_CONTAINS: { retVal = (szStringToCompare.Find(m_lpFDD->szMatchStr) != -1); break; } }
return retVal; }
private: LPFINDSTR m_lpFS; }; |
閫氳繃榪欎釜鎿嶄綔浣犲彲浠ヤ粠vector涓湁鏁堝湴鍒犻櫎鏁版嵁錛?/span>
|
// remove all strings containing the value of // szRemove from vector<CString> vs.
FindStr fs; fs.iMode = FM_CONTAINS; fs.szMatchStr = szRemove;
vs.erase(std::remove_if(vs.begin(), vs.end(), FindMatchingString(&fs)), vs.end()); |
Remove_if()鑳藉仛浠涔堬紵
浣犲彲鑳戒細鐤戞儜錛屽浜庝笂闈㈤偅涓緥瀛愬湪璋冪敤remove_if()鐨勬椂鍊欒繕瑕佷嬌鐢?/span>erase()鍛紵榪欐槸鍥犱負澶у騫朵笉鐔熸倝STL涓殑綆楁硶銆?/span>Remove(),remove_if()絳夋墍鏈夌殑縐誨嚭鎿嶄綔閮芥槸寤虹珛鍦ㄤ竴涓凱浠h寖鍥翠笂鐨勶紝閭d箞涓嶈兘鎿嶄綔瀹瑰櫒涓殑鏁版嵁銆傛墍浠ュ湪浣跨敤remove_if()錛屽疄闄呬笂鎿嶄綔鐨勬椂瀹瑰櫒閲屾暟鎹殑涓婇潰鐨勩傛濊冧笂闈㈢殑渚嬪瓙錛?/span>
1銆?span>
szRemove = “o”.2銆?span> vs瑙佷笅闈㈠浘琛ㄤ腑鐨勬樉紺恒?br>

瑙傚療榪欎釜緇撴灉錛屾垜浠彲浠ョ湅鍒?/span>remove_if()瀹為檯涓婃槸鏍規嵁鏉′歡瀵硅凱浠e湴鍧榪涜浜嗕慨鏀癸紝鍦ㄦ暟鎹殑鍚庨潰瀛樺湪涓浜涙畫浣欑殑鏁版嵁錛岄偅浜涢渶瑕佸垹闄ょ殑鏁版嵁銆傚墿涓嬬殑鏁版嵁鐨勪綅緗彲鑳戒笉鏄師鏉ョ殑鏁版嵁錛屼絾浠栦滑鏄笉鐭ラ亾鐨勩?/span>
璋冪敤erase()鏉ュ垹闄ら偅浜涙畫浣欑殑鏁版嵁銆傛敞鎰忎笂闈緥瀛愪腑閫氳繃erase()鍒犻櫎remove_if()鐨勭粨鏋滃拰vs.enc()鑼冨洿鐨勬暟鎹?/span>
鍘嬬緝涓涓噧鑲跨殑vector
寰堝鏃跺欏ぇ閲忕殑鍒犻櫎鏁版嵁錛屾垨鑰呴氳繃浣跨敤reserve()錛岀粨鏋?/span>vector鐨勭┖闂磋繙榪滃ぇ浜庡疄闄呴渶瑕佺殑銆傛墍鏈夐渶瑕佸帇緙?/span>vector鍒板畠瀹為檯鐨勫ぇ灝忋?/span>resize()鑳藉澧炲姞vector鐨勫ぇ灝忋?/span>Clear()浠呬粎鑳藉鏀瑰彉緙撳瓨鐨勫ぇ灝忥紝鎵鏈夌殑榪欎簺瀵逛簬vector閲婃斁鍐呭瓨絳変節闈炲父閲嶈浜嗐傚浣曟潵瑙e喅榪欎簺闂鍛紝璁╂垜浠潵鎿嶄綔涓涓嬨?/span>
鎴戜滑鍙互閫氳繃涓涓?/span>vector鍒涘緩鍙︿竴涓?/span>vector銆傝鎴戜滑鐪嬬湅榪欏皢鍙戠敓浠涔堛傚亣瀹氭垜浠凡緇忔湁涓涓?/span>vector v錛屽畠鐨勫唴瀛樺ぇ灝忎負1000錛屽綋鎴戜滑璋冪敤size()鐨勬椂鍊欙紝瀹冪殑澶у皬浠呬負7銆傛垜浠氮璐逛簡澶ч噺鐨勫唴瀛樸傝鎴戜滑鍦ㄥ畠鐨勫熀紜涓婂垱寤轟竴涓?/span>vector銆?/span>
|
std::vector<CString> vNew(v); cout << vNew.capacity(); |
vNew.capacity()榪斿洖鐨勬槸7銆傝繖璇存槑鏂板垱寤虹殑鍙槸鏍規嵁瀹為檯澶у皬鏉ュ垎閰嶇殑絀洪棿銆傜幇鍦ㄦ垜浠笉鎯抽噴鏀?/span>v錛屽洜涓烘垜浠鍦ㄥ叾瀹冨湴鏂圭敤鍒板畠錛屾垜浠彲浠ヤ嬌鐢?/span>swap()灝?/span>v鍜?/span>vNew浜掔浉浜ゆ崲涓涓嬶紵
|
vNew.swap(v); cout << vNew.capacity(); cout << v.capacity(); |
鏈夎叮鐨勬槸錛?/span>vNew.capacity()鏄?/span>1000錛?/span>鑰?/span>v.capacity()鏄?/span>7銆?/span>
鐜板湪鏄揪鍒版垜鐨勭洰鐨勪簡錛屼絾鏄茍涓嶆槸寰堝ソ鐨勮В鍐蟲柟娉曪紝鎴戜滑鍙互鍍忎笅闈㈣繖涔堝啓錛?/span>
|
std::vector<CString>(v).swap(v); |
浣犲彲浠ョ湅鍒版垜浠仛浜嗕粈涔堬紵鎴戜滑鍒涘緩浜嗕竴涓復鏃跺彉閲忎唬鏇塊偅涓懡鍚嶇殑錛岀劧鍚庝嬌鐢?/span>swap(),榪欐牱鎴戜滑灝卞幓鎺変簡涓嶅繀瑕佺殑絀洪棿錛屽緱鍒板疄闄呭ぇ灝忕殑v銆?/span>
緇撹
鎴戝笇鏈涜繖涓枃。鍙互缁欓偅浜涗娇鐢STL vector瀹瑰櫒鐨勫紑鍙戣呭緢鏈変環鍊肩殑鍙傝冦傛垜涔熷笇鏈涢氳繃闃呰榪欑瘒鏂囩珷浣犲彲浠ユ斁蹇冨湴浣跨敤vector鏉ヤ唬鏇?/span>C璇█涓殑鏁版嵁浜嗐?/span>
鍙傝?/span>
Plauger, P.J. Standard C++ Library Reference. February, 2003. MSDN.
Schildt, Herbert. C++ from the Ground Up, Second Edition.
Sutter, Herb. More Exceptional C++.
OTL鏄竴涓函C++鐨勯氱敤鏁版嵁搴撹繛鎺ユā鏉垮簱錛屽彲浠ユ敮鎸佸悇縐嶅綋涓嬫祦琛岀殑鏁版嵁搴擄紝濡侽racle錛孲ybase, MySQL, PostgreSQL, EnterpriseDB, SQLite, 涓嬭澆緗戝潃錛?font style="WORD-BREAK: normal; LINE-HEIGHT: 19px; WORD-WRAP: normal" size=2>http://otl.sourceforge.net/ OTL浣跨敤綆鍗? 鍙澶存枃浠朵腑鍖呭惈鏈? #include "otlv4.h" 灝卞彲錛屽疄闄呬笂鏁翠釜OTL灝變竴涓?H鐨勬枃浠訛紝浣跨敤璧鋒潵鏋佷負鐨勬柟渚褲?/span> OTL浣跨敤鏂規硶錛?/p>
1銆侀鍏堟寚瀹氳榪炴帴鐨勬暟鎹簱綾誨瀷錛孫TL鐢?font style="WORD-BREAK: normal; LINE-HEIGHT: 19px; WORD-WRAP: normal" size=2>瀹忓畾涔?/font>鏉ユ寚瀹氳榪炴帴鐨勬暟鎹簱綾誨瀷銆?font style="WORD-BREAK: normal; LINE-HEIGHT: 19px; WORD-WRAP: normal" size=2>OTL浼氭牴鎹繖涓畯瀹氫箟鏉ュ垵濮嬪寲鏁版嵁搴撹繛鎺ョ殑鐜銆?/span> 鐩稿叧鐨勫畯瀹氫箟鍒楄〃 http://otl.sourceforge.net/otl3_compile.htm 濡傦細 #define OTL_ORA8I 琛ㄧず榪炴帴Oracle 8i 鏁版嵁搴撱?/p>
2銆佷緥瀛?/span> #include <iostream> #define OTL_ORA8I // 鎸囧畾榪炴帴鐨勬暟鎹簱綾誨瀷 otl_connect db; // 瀹氫箟鏁版嵁搴撳疄渚?/span> void insert() { //鏌ヨ璁板綍 void select() } int main() }
using namespace std;
#include <stdio.h>
#include <otlv4.h> // include the OTL 4 header file
// 娣誨姞璁板綍
#if defined(_MSC_VER)
#if (_MSC_VER >= 1400) // VC++ 8.0 or higher
#else
#endif
#else
#endif
}
{
{
http://sourceforge.net/projects/boost瀵繪壘涓涓悎閫傜殑鐗堟湰銆傛瘮濡傛垜涓嬭澆鐨勬槸boost_1_33_1.tar.gz錛岃В鍘嬪埌/opt銆?br>
tar xzvf boost_1_33_1.tar.gz -C/opt
cd /opt/boost_1_33_1
cd tools/build/jam_src/
./build.sh
cd ../../..
bjam -sTOOLS=gcc install
BOOST_ROOT=/opt/boost_1_33_1
BOOST_INCLUDE=/usr/local/include/boost-1_33_1
BOOST_LIB=/usr/local/lib
#!/bin/sh
#boost settings
BOOST_ROOT=/opt/boost_1_33_1
BOOST_INCLUDE=/usr/local/include/boost-1_33_1
BOOST_LIB=/usr/local/lib
export BOOST_ROOT BOOST_INCLUDE BOOST_LIB
#include <boost/lexical_cast.hpp>
#include <iostream>
int main()
{
using boost::lexical_cast;
int a = lexical_cast<int>("123");
double b = lexical_cast<double>("123.12");
std::cout<<a<<std::endl;
std::cout<<b<<std::endl;
return 0;
}
g++ lex.cpp -I$BOOST_ROOT -o lex
./lex
123
123.12
#include <iostream>
#include <string>
#include <boost/regex.hpp>
int main() {
std::string s = "who,lives:in-a,pineapple under the sea?";
boost::regex re(",|:|-|\\s+");
boost::sregex_token_iterator
p(s.begin( ), s.end( ), re, -1);
boost::sregex_token_iterator end;
while (p != end)
std::cout << *p++ << '\n';
}
g++ re.cpp -I$BOOST_ROOT -lboost_regex-gcc -o re
./re
who
lives
in
a
pineapple
under
the
sea?
ln -s /opt/boost_1_33_1/boost /usr/include/boost
ln -s /usr/local/include/boost-1_33_1/boost /usr/include/boost
cd /opt/boost_1_33_1
bjam -sTOOLS=gcc clean
#!/usr/bin/python
import os
import sys
import re
BOOST_ROOT = os.getenv('BOOST_ROOT')
BOOST_LIB = os.getenv('BOOST_LIB')
#BOOST_ROOT = '/opt/boost_1_33_1'
#BOOST_LIB = '/usr/local/lib'
def getlibs():
alls = os.listdir(BOOST_LIB)
libpattern = re.compile(r'^libboost_([^-]+)-gcc')
libs = {}
for lib in alls:
m = libpattern.match(lib)
if m:
libs[m.group(1).lower()] = 1
return libs
pattern = re.compile(r'^\s*#include\s*<\s*boost/(.+)\.(h|hpp)\s*>')
libs = getlibs()
libskeys = libs.keys()
includes = {}
ENV = os.environ
ARGV = sys.argv[1:]
files = ARGV
if len(files) == 0:
sys.exit()
for f in files:
if f.lower().endswith('.cpp'):
fp = open(f, 'r')
lines = fp.readlines()
for ln in lines:
m = pattern.match(ln)
if m:
libname = m.group(1).lower()
if libname in libskeys:
includes[libname] = 1
libline = ' '.join(map(lambda lib: '-lboost_'+lib+'-gcc', includes.keys()))
obj = ARGV[0]
obj = obj[:len(obj)-4]
#cmd = 'g++ %s -I%s %s -o %s' % (' '.join(files), BOOST_ROOT, libline, obj)
cmd = 'g++ %s %s -o %s' % (' '.join(files), libline, obj)
print cmd
os.system(cmd)
gccboost lex.cpp
gccboost re.cpp
cmd = 'g++ %s %s -o %s' % (' '.join(files), libline, obj)
cmd = 'g++ %s -I%s %s -o %s' % (' '.join(files), BOOST_ROOT, libline, obj)
BOOST_ROOT = os.getenv('BOOST_ROOT')
BOOST_LIB = os.getenv('BOOST_LIB')
BOOST_ROOT = '/opt/boost_1_33_1'
BOOST_LIB = '/usr/local/lib'
cmd = 'g++ %s %s -o %s' % (' '.join(files), libline, obj)
cmd = 'g++ %s %s' % (' '.join(files), libline)
鏈枃璇︾粏鎻忚堪浜嗗湪Linux鎿嶄綔緋葷粺涓婂畨瑁呭拰閰嶇疆“鑷傚簲閫氫俊鐜(ACE)”鐨勮繃紼嬪拰娉ㄦ剰浜嬮」銆?br>鏂囦腑鐨勬弿榪板熀浜嶳edHat Linux 9鎿嶄綔緋葷粺鍜孉CE 5.4鐗?/p>