Thứ nhất, myVector
sẽ được khởi tạo, ngay cả khi bạn không làm gì cả, vì nó có nhà xây dựng không tầm thường. Nếu bạn muốn khởi tạo nó, hãy đưa con trỏ đến một chuỗi int
, bạn sẽ cũng phải biết độ dài. Nếu bạn có cả một con trỏ và chiều dài, bạn có thể làm:
: myVector(pInitialValues, pInitialValues + length)
Ngoài ra (và idiomatically hơn), bạn sẽ cho người gọi làm việc bổ sung, và có các nhà xây dựng mất hai con trỏ, một bắt đầu và kết thúc: (. Nếu người gọi là sử dụng C++ 11, ông có thể có được những từ một mảng C phong cách sử dụng std::begin()
và std::end()
)
: myVector(pBegin, pEnd)
EDIT:
Chỉ cần làm cho nó hoàn toàn rõ ràng: chỉ cần một int*
không cung cấp đủ thông tin để làm bất cứ điều gì . An int*
trỏ đến thành phần đầu tiên của một mảng kiểu C ; bạn cũng cần một số cách để kết thúc: số phần tử, con trỏ kết thúc, v.v. Trong các trường hợp đặc biệt, có thể sử dụng các kỹ thuật khác; ví dụ: nếu kiểu C kiểu C chỉ chứa các số không âm, bạn có thể sử dụng -1
làm một tình trạng và một cái gì đó như : myVector(pVector, std::find( pVector, NULL, -1))
. Đây là những trường hợp đặc biệt, tuy nhiên.
Nguồn
2013-02-27 08:50:43
Tôi muốn khởi tạo 'std :: vector' của bạn theo cách nào? (Hình thức cụ thể của các nhà thầu của nó bạn muốn sử dụng?) –
Nó phụ thuộc. Ý bạn là gì khi "khởi tạo"? Đối với phiên bản tiêu chuẩn C++ nào bạn đang làm việc? – Johnsyweb
@Mark Garcia với int * p_Vector – CLearner