亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? vector.h

?? 圖像分割算法
?? H
字號(hào):
//Copyright (c) 2004-2005, Baris Sumengen
//All rights reserved.
//
// CIMPL Matrix Performance Library
//
//Redistribution and use in source and binary
//forms, with or without modification, are
//permitted provided that the following
//conditions are met:
//
//    * No commercial use is allowed. 
//    This software can only be used
//    for non-commercial purposes. This 
//    distribution is mainly intended for
//    academic research and teaching.
//    * Redistributions of source code must
//    retain the above copyright notice, this
//    list of conditions and the following
//    disclaimer.
//    * Redistributions of binary form must
//    mention the above copyright notice, this
//    list of conditions and the following
//    disclaimer in a clearly visible part 
//    in associated product manual, 
//    readme, and web site of the redistributed 
//    software.
//    * Redistributions in binary form must
//    reproduce the above copyright notice,
//    this list of conditions and the
//    following disclaimer in the
//    documentation and/or other materials
//    provided with the distribution.
//    * The name of Baris Sumengen may not be
//    used to endorse or promote products
//    derived from this software without
//    specific prior written permission.
//
//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
//HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
//EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
//NOT LIMITED TO, THE IMPLIED WARRANTIES OF
//MERCHANTABILITY AND FITNESS FOR A PARTICULAR
//PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
//CONTRIBUTORS BE LIABLE FOR ANY
//DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
//EXEMPLARY, OR CONSEQUENTIAL DAMAGES
//(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
//OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
//DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
//HOWEVER CAUSED AND ON ANY THEORY OF
//LIABILITY, WHETHER IN CONTRACT, STRICT
//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
//OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
//OF THIS SOFTWARE, EVEN IF ADVISED OF THE
//POSSIBILITY OF SUCH DAMAGE.



#pragma once
#ifndef VECTOR_H
#define VECTOR_H

#include <iostream>

using std::cout;
using std::cerr;
using std::endl;
using std::ostream;
using std::right;
using std::fixed;

#include <iomanip>

using std::setw;

#include <math.h>

#include <typeinfo>


#include "cimpl.h"


#include <sstream>

using std::ostringstream;

#include <limits>
using std::numeric_limits;

using namespace std;


namespace CIMPL
{


// forward declaration
//template< class T > class Array;
template< class T > class Matrix;
template< class T > class Vector;


/// \brief 1-D Vector class.
template< class T >
class Vector
{
	//friend class Array<T>;
	friend class Matrix<T>;


protected:
	T *data;
	int length;
	bool memoryManaged;
	Cleaner<T> *clean;   // Reference counting Garbage collector.


public:
	Vector(void);
	explicit Vector(int l);
	Vector(string str);
	Vector(int l, T init);
	Vector(T* _data, int l); // creates unmanaged memory
	Vector(Vector<T> &v);
	
	~Vector(void);
	void Set(T* _data, const int l); // creates unmanaged memory

	void Clean();

	const T* DataPtr() const;
	T* Data();

	Vector<T> Clone() const;
	Vector<T> Slice(int start, int end);
	Vector<T> Slice(string str);

	const bool IsMemoryManaged() const;

	const int Length() const;
	const int Numel() const;
	void Init(const T init);
	Vector<T>& Rand(const double max);
	static Vector<T> Rand(const int l, const double max);

	void ReadFromVector(const Vector<T>& m, const int index=0);


	static Vector<T> Cat(Vector<T>& m1, Vector<T>& m2);

	static Vector<T> Ones(int side);
	static Vector<T> Zeros(int side);


	static T Inner(Vector<T>& m1, Vector<T>& m2);

	// Boolean Operations...
	static Vector<int> And(Vector<T>& m1, Vector<T>& m2);
	static Vector<int> Or(Vector<T>& m1, Vector<T>& m2);
	static Vector<int> Lt(Vector<T>& m1, Vector<T>& m2);
	static Vector<int> Gt(Vector<T>& m1, Vector<T>& m2);
	static Vector<int> Le(Vector<T>& m1, Vector<T>& m2);
	static Vector<int> Ge(Vector<T>& m1, Vector<T>& m2);
	static Vector<int> Eq(Vector<T>& m1, Vector<T>& m2);
	static Vector<int> Ne(Vector<T>& m1, Vector<T>& m2);

	// Boolean Operations with value type...
	static Vector<int> And(Vector<T>& m, T v);
	static Vector<int> Or(Vector<T>& m, T v);
	static Vector<int> Lt(Vector<T>& m, T v);
	static Vector<int> Gt(Vector<T>& m, T v);
	static Vector<int> Le(Vector<T>& m, T v);
	static Vector<int> Ge(Vector<T>& m, T v);
	static Vector<int> Eq(Vector<T>& m, T v);
	static Vector<int> Ne(Vector<T>& m, T v);



// Add vector to another vector
	static Vector<T> Add(Vector<T>& m1, Vector<T>& m2);
	static Vector<T> Subtract(Vector<T>& m1, Vector<T>& m2);
	static Vector<T> Multiply(Vector<T>& m1, Vector<T>& m2);
	static Vector<T> Divide(Vector<T>& m1, Vector<T>& m2);

// Add value to another vector
	static Vector<T> Add(Vector<T>& m1, T v2);
	static Vector<T> Subtract(Vector<T>& m1, T v2);
	static Vector<T> Subtract(T v2, Vector<T>& m1);
	static Vector<T> Multiply(Vector<T>& m1, T v2);
	static Vector<T> Divide(Vector<T>& m1, T v2);
	static Vector<T> Divide(T v2, Vector<T>& m1);


// Add vector to "this" vector
	Vector<T>& Add(Vector<T>& m);
	Vector<T>& Subtract(Vector<T>& m);
	Vector<T>& Multiply(Vector<T>& m);
	Vector<T>& Divide(Vector<T>& m);

// Add value to "this" vector
	Vector<T>& Add(T v);
	Vector<T>& Subtract(T v);
	Vector<T>& Multiply(T v);
	Vector<T>& Divide(T v);


//OPERATORS
	Vector<T>& operator= (Vector<T>& m);
	Vector<T>& operator= (Matrix<T>& m);
	//Vector<T>& operator= (Array<T>& m);

	Vector<T>& operator= (string str);

	Vector<T> operator+ ();
	Vector<T> operator- ();
	Vector<int> operator! ();

	friend Matrix<T> operator, (Vector<T>& m1, Vector<T>& m2)
	{
		return Matrix<T>::Cat(2,m1, m2);
	}
	



	friend ostream& operator<< (ostream& output, const Vector<T>& v)
	{
		int lm = v.Length();
		int rowNoWidth = (int)log10((double)(lm-1))+2;
		int maxLength  = 1;
		for(int i=0; i<v.Length(); i++)
		{
			ostringstream oS;
			oS << v.data[i];
			int l = (int)oS.str().length();
			if(l>maxLength)
			{
				maxLength = l;
			}
		}

		output << typeid(v).name() << " of size " << v.length << endl;
		output << "----------------------" << endl;
		for(int i=0;i<v.length;i++)
		{
			output << "ROW" << setw(rowNoWidth) << i+1 << "|" << right << setw(maxLength+3) << v.data[i] << " |" << endl;
		}
		output << "----------------------" << endl;
		output << endl;
		return output;
	}
	

	T& operator() (const int i);
	T& operator[] (const int i); // no bounds check
		
	// slice x slice: returns a vector.
	Vector<T> operator() (int start, int end);
	Vector<T> operator() (string str);

	Vector<T> operator() (Vector<int>& ind);
	
	T& Elem(const int i);
	T& ElemNC(const int i); // No bounds check
	
	
	// Vector to Vector inner product
	friend T operator& (Vector<T>& m1, Vector<T>& m2)
	{
		return Vector<T>::Inner(m1, m2);
	}
	
	
	// Boolean operations
	friend Vector<int> operator&& (Vector<T>& m1, Vector<T>& m2)
	{
		return Vector<T>::And(m1, m2);
	}

	friend Vector<int> operator|| (Vector<T>& m1, Vector<T>& m2)
	{
		return Vector<T>::Or(m1, m2);
	}

	friend Vector<int> operator< (Vector<T>& m1, Vector<T>& m2)
	{
		return Vector<T>::Lt(m1, m2);
	}

	friend Vector<int> operator> (Vector<T>& m1, Vector<T>& m2)
	{
		return Vector<T>::Gt(m1, m2);
	}

	friend Vector<int> operator<= (Vector<T>& m1, Vector<T>& m2)
	{
		return Vector<T>::Le(m1, m2);
	}

	friend Vector<int> operator>= (Vector<T>& m1, Vector<T>& m2)
	{
		return Vector<T>::Ge(m1, m2);
	}

	friend Vector<int> operator== (Vector<T>& m1, Vector<T>& m2)
	{
		return Vector<T>::Eq(m1, m2);
	}

	friend Vector<int> operator!= (Vector<T>& m1, Vector<T>& m2)
	{
		return Vector<T>::Ne(m1, m2);
	}


	// Boolean operations with value type
	friend Vector<int> operator&& (Vector<T>& m, T v)
	{
		return Vector<T>::And(m, v);
	}
	friend Vector<int> operator&& (T v, Vector<T>& m)
	{
		return Vector<T>::And(m, v);
	}

	friend Vector<int> operator|| (Vector<T>& m, T v)
	{
		return Vector<T>::Or(m, v);
	}
	friend Vector<int> operator|| (T v, Vector<T>& m)
	{
		return Vector<T>::Or(m, v);
	}

	friend Vector<int> operator< (Vector<T>& m, T v)
	{
		return Vector<T>::Lt(m, v);
	}
	friend Vector<int> operator< (T v, Vector<T>& m)
	{
		return Vector<T>::Gt(m, v);
	}

	friend Vector<int> operator> (Vector<T>& m, T v)
	{
		return Vector<T>::Gt(m, v);
	}
	friend Vector<int> operator> (T v, Vector<T>& m)
	{
		return Vector<T>::Lt(m, v);
	}

	friend Vector<int> operator<= (Vector<T>& m, T v)
	{
		return Vector<T>::Le(m, v);
	}
	friend Vector<int> operator<= (T v, Vector<T>& m)
	{
		return Vector<T>::Ge(m, v);
	}

	friend Vector<int> operator>= (Vector<T>& m, T v)
	{
		return Vector<T>::Ge(m, v);
	}
	friend Vector<int> operator>= (T v, Vector<T>& m)
	{
		return Vector<T>::Le(m, v);
	}

	friend Vector<int> operator== (Vector<T>& m, T v)
	{
		return Vector<T>::Eq(m, v);
	}
	friend Vector<int> operator== (T v, Vector<T>& m)
	{
		return Vector<T>::Eq(m, v);
	}

	friend Vector<int> operator!= (Vector<T>& m, T v)
	{
		return Vector<T>::Ne(m, v);
	}
	friend Vector<int> operator!= (T v, Vector<T>& m)
	{
		return Vector<T>::Ne(m, v);
	}



// Add Vector to another Vector
	friend Vector<T> operator+ (Vector<T>& m1, Vector<T>& m2)
	{
		return Vector<T>::Add(m1, m2);
	}

	friend Vector<T> operator- (Vector<T>& m1, Vector<T>& m2)
	{
		return Vector<T>::Subtract(m1, m2);
	}

	friend Vector<T> operator* (Vector<T>& m1, Vector<T>& m2)
	{
		return Vector<T>::Multiply(m1, m2);
	}

	friend Vector<T> operator/ (Vector<T>& m1, Vector<T>& m2)
	{
		return Vector<T>::Divide(m1, m2);
	}


// Add value to another matrix
	friend Vector<T> operator+ (Vector<T>& m, T v)
	{
		return Vector<T>::Add(m, v);
	}

	friend Vector<T> operator+ (T v, Vector<T>& m)
	{
		return Vector<T>::Add(m, v);
	}

	friend Vector<T> operator- (Vector<T>& m, T v)
	{
		return Vector<T>::Subtract(m, v);
	}

	friend Vector<T> operator- (T v, Vector<T>& m)
	{
		return Vector<T>::Subtract(v, m);
	}

	friend Vector<T> operator* (Vector<T>& m, T v)
	{
		return Vector<T>::Multiply(m, v);
	}

	friend Vector<T> operator* (T v, Vector<T>& m)
	{
		return Vector<T>::Multiply(m, v);
	}

	friend Vector<T> operator/ (Vector<T>& m, T v)
	{
		return Vector<T>::Divide(m, v);
	}

	friend Vector<T> operator/ (T v, Vector<T>& m)
	{
		return Vector<T>::Divide(v, m);
	}




// Add inline
	Vector<T>& operator+= (Vector<T>& m);
	Vector<T>& operator-= (Vector<T>& m);
	Vector<T>& operator*= (Vector<T>& m);
	Vector<T>& operator/= (Vector<T>& m);

	Vector<T>& operator+= (T v);
	Vector<T>& operator-= (T v);
	Vector<T>& operator*= (T v);
	Vector<T>& operator/= (T v);

	
// TYPE CONVERSIONS
	//Vector(Array<T> &m);
	Vector(Matrix<T> &m);

};




#include "./Vector.inl"


}; //namespace



#endif







?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合久久av| 欧美性大战久久久久久久蜜臀| 午夜欧美大尺度福利影院在线看| 亚洲欧美另类小说| 综合久久久久综合| 亚洲色图在线看| 亚洲女人小视频在线观看| 成人欧美一区二区三区白人| 亚洲国产精品成人综合色在线婷婷| 久久综合国产精品| 国产婷婷精品av在线| 欧美激情在线一区二区三区| 国产精品乱码一区二三区小蝌蚪| 国产视频一区不卡| 亚洲欧洲av在线| 亚洲精品视频一区| 亚洲成人在线免费| 婷婷综合另类小说色区| 日本色综合中文字幕| 精品一区二区三区蜜桃| 国产精品正在播放| 99精品久久久久久| 欧美性猛片aaaaaaa做受| 欧美肥大bbwbbw高潮| 精品国产99国产精品| 国产三级精品三级| 亚洲男帅同性gay1069| 亚洲成人动漫一区| 美腿丝袜亚洲色图| 国产91丝袜在线播放0| 一本色道久久加勒比精品| 欧美丝袜丝nylons| 精品久久久久久综合日本欧美 | 91精品视频网| 欧美成人a视频| 中文字幕乱码日本亚洲一区二区| 中文字幕欧美一区| 午夜欧美大尺度福利影院在线看| 美女精品自拍一二三四| 福利一区福利二区| 欧美性一二三区| 日韩午夜激情视频| 国产精品视频一二三| a亚洲天堂av| 色嗨嗨av一区二区三区| 日韩视频在线永久播放| 国产欧美日韩精品在线| 一区二区三区产品免费精品久久75| 日韩电影在线观看电影| 国产精品亚洲а∨天堂免在线| 91污在线观看| 欧美成人欧美edvon| 亚洲免费观看在线观看| 蜜臀91精品一区二区三区| 99久久精品久久久久久清纯| 欧美一区二区播放| 最新中文字幕一区二区三区| 另类成人小视频在线| 91亚洲国产成人精品一区二区三| 欧美一区二区美女| 亚洲婷婷在线视频| 国产一区免费电影| 欧美片网站yy| 亚洲男人天堂av| 国产精品一区久久久久| 欧美区视频在线观看| 日韩理论在线观看| 国产一区二区三区精品视频| 精品视频一区 二区 三区| 中文字幕+乱码+中文字幕一区| 三级在线观看一区二区| 91小视频免费观看| 国产亚洲一区字幕| 日本 国产 欧美色综合| 91福利精品视频| 国产精品久久久久久亚洲毛片| 欧美三电影在线| 国产精品久久三| 国产美女主播视频一区| 91精品在线麻豆| 亚洲一区视频在线| 99久免费精品视频在线观看 | 日韩精品视频网| 91色.com| 亚洲国产精品99久久久久久久久| 久久精品国产秦先生| 7878成人国产在线观看| 亚洲激情图片一区| 99久久综合99久久综合网站| 欧美国产精品一区二区| 国产在线播放一区| 欧美成人午夜电影| 麻豆一区二区在线| 在线成人免费观看| 亚洲a一区二区| 欧美影院午夜播放| 亚洲一区二区三区视频在线| 一本一本大道香蕉久在线精品 | 久久伊99综合婷婷久久伊| 蜜臀99久久精品久久久久久软件| 欧美肥妇bbw| 三级成人在线视频| 制服.丝袜.亚洲.另类.中文| 亚洲成年人网站在线观看| 欧美综合欧美视频| 一区二区激情视频| 欧美亚洲综合网| 亚洲一区二区三区在线播放 | 国产精品免费看片| 国产成人免费视频精品含羞草妖精 | www.亚洲国产| 国产精品久久久久影院色老大| 豆国产96在线|亚洲| 中文字幕免费不卡| 91香蕉视频在线| 亚洲最快最全在线视频| 欧美日韩亚洲国产综合| 丝袜亚洲精品中文字幕一区| 欧美一三区三区四区免费在线看| 蜜臂av日日欢夜夜爽一区| 久久伊人中文字幕| 成人免费av资源| 一区二区三区在线免费播放| 欧美日韩一级片网站| 污片在线观看一区二区 | 亚洲亚洲人成综合网络| 欧美日韩免费视频| 理论片日本一区| 久久久精品国产99久久精品芒果| 国产91综合网| 亚洲精品视频观看| 91精品国产综合久久久久久久久久 | 色先锋资源久久综合| 亚洲成人中文在线| 欧美电影免费观看高清完整版| 国内外成人在线| 中文字幕一区二区三区不卡 | 日韩欧美中文一区| 国产成人精品免费网站| 亚洲美女偷拍久久| 欧美一级欧美一级在线播放| 国产成人综合在线播放| 亚洲欧美偷拍三级| 欧美一区二区三区影视| 国产99一区视频免费 | 色综合久久久久综合体桃花网| 亚洲一区二区三区不卡国产欧美| 日韩欧美国产系列| 成人久久久精品乱码一区二区三区| 亚洲另类中文字| 日韩一区二区三区视频| 成人福利电影精品一区二区在线观看| 怡红院av一区二区三区| 日韩欧美一二区| 99久久久久久| 久久精品国产免费| 亚洲人精品午夜| 日韩欧美国产一区二区三区| 成人免费视频caoporn| 日韩精品成人一区二区三区| 国产精品国产自产拍高清av| 欧美一级片在线观看| 97精品久久久久中文字幕| 久久99精品网久久| 亚洲最大成人综合| 国产欧美一区视频| 欧美一区二区在线视频| 91丨九色丨黑人外教| 国产一区欧美二区| 婷婷激情综合网| 亚洲日韩欧美一区二区在线| 久久在线免费观看| 在线成人av网站| 日本高清不卡aⅴ免费网站| 国产一区二区三区av电影| 亚洲成人免费av| 亚洲天堂免费看| 国产偷国产偷精品高清尤物| 欧美一区二区三区的| 91精品91久久久中77777| 国产成人亚洲精品狼色在线| 免费看日韩精品| 亚洲国产综合视频在线观看| 国产精品乱码久久久久久| 精品国产凹凸成av人导航| 9191精品国产综合久久久久久| 91免费观看视频| 成人av午夜电影| 国产精品亚洲人在线观看| 狠狠色丁香婷婷综合| 青青青伊人色综合久久| 一区二区三区毛片| 亚洲视频在线观看三级| 中文在线资源观看网站视频免费不卡| 精品日韩在线一区| 91精品免费观看| 91精品欧美久久久久久动漫| 欧美日韩国产另类一区| 在线观看日韩av先锋影音电影院| 99久久精品免费观看|