2011-01-11 78 views

Trả lời

12

Trong trường hợp đó, giá trị duy nhất mà bạn có thể thiết lập nó để là false với:

bool* a = new bool[100000](); 

Điều đó nói rằng, tôi không chắc chắn lý do tại sao bạn nghĩ rằng bạn không thể sử dụng một vòng lặp. Họ ở đó vì một lý do. Bạn chỉ nên sử dụng chức năng làm sẵn fill hoặc fill_n (tùy theo khẩu vị).


Lưu ý sử dụng new "thô" như vậy là thực hành lập trình khủng khiếp. Sử dụng một std::vector<bool> *:

std::vector<bool> v; 

v.resize(100000); 
std::fill(v.begin(), v.end(), true); // or false 

Hoặc:

std::vector<bool> v; 

v.reserve(100000); 
std::fill_n(std::back_inserter(v), 100000, true); // or false 

* Tất nhiên, std::vector<bool> xảy ra để phá vỡ giao diện thùng chứa thích hợp như vậy không thực sự lưu trữ bool 's. Nếu đó là vấn đề, hãy sử dụng số std::vector<char> thay thế.

+0

Tôi đã sử dụng một vector, nhưng nó là cách quá chậm. Vì vậy, tôi đang tìm kiếm một giải pháp nhanh hơn. Nhưng tôi đã không sử dụng điền vì vậy tôi nghĩ rằng điều này có thể nhanh hơn. –

+0

@BSeven: Tôi nghiêm túc nghi ngờ rằng khiếu nại của bạn là đúng và bạn đang ở trong một vị trí mà nó sẽ quan trọng anyway. Sử dụng 'std :: vector', nó xử lý việc quản lý cho bạn để bạn không dễ bị rò rỉ. Bạn có hồ sơ ứng dụng phát hành hoàn thành bản phát hành hoàn chỉnh của mình và tìm thấy kết quả được đề xuất bằng cách sử dụng 'std :: vector' là phần chậm nhất trong ứng dụng của bạn không? (Số) – GManNickG

+0

@BSeven: tại thời điểm nào vector là quá chậm? Trong bản biên dịch phát hành, nó phải nhanh như một mảng thô nếu được sử dụng đúng cách. – Philipp

14

Ngoài những gì GMAN nói ở trên, tôi tin rằng bạn có thể chỉ định một giá trị ban đầu cho mỗi giá trị trong vector của bạn về xây dựng như thế này ..

vector<bool> a (100000, true); 
+1

+1 Duh trên một phần của tôi, rất đơn giản. :) – GManNickG

2

Bạn nên thích cách tiếp cận vector, nhưng bạn cũng có thể sử dụng memset.

1

Nếu 0 is false1 is true coi - bạn có thể làm

bool* a = new bool[100]; 
std::fill_n(a, 100, 1); // all bool array elements set to true 
std::fill_n(a, 100, 0); // all bool array elements set to false 
Các vấn đề liên quan