c++ - Số ngẫu nhiên luôn tạo ra 1 số - 6ren
1) { return 2*funcRec(n - 1) + 3*funcRec(n
c++ - g++, clang++, các mẩu tin biên dịch sử dụng libboost - quá trình biên dịch g++8 không thành công khi g++7 thành công;
Tôi có ví dụ về mã trên kho github và đã tạo bản dựng trên travis-ci để dễ dàng tái tạo. Ví dụ tối thiểu, đầy đủ và có thể kiểm chứng có thể không tối thiểu, nhưng tôi tin rằng nó đủ nhỏ và nó sử dụng boost.inte
haskell - f, g, h::Kleisli ((->) e) ab <=> f >>> (g &&& h) = (f >>> g) &&& (f >>> h)?
EDIT: Chúng tôi sẽ gọi mũi tên p hoàn toàn nếu tồn tại một hàm như vậy f ví dụ: p = arr f . Tôi đang cố gắng hiểu rõ hơn về Mũi tên trong Haskell và tôi muốn tìm hiểu khi nào f >>> (g &&& h) = (f >>>g
Bộ chuyển đổi đơn nguyên Scalaz. Áp dụng hàm f1 :A => G[B], f2:B => G[C] cho đối tượng F[G[A]]
Tôi có hai (hoặc nhiều) hàm được định nghĩa là: val functionM: String => Option[Int] = s => Some(s.length) val functionM2: Int => Op
Trong ký hiệu tiệm cận, cho g(n), hợp của O(g(n)) và Ω(g(n)) có phải là tập phổ quát U của tất cả các hàm không?
Có vẻ như vậy. Bất kỳ bằng chứng trực quan hoặc nghiêm túc đều được đánh giá cao. Câu trả lời tốt nhất là không. Tôi nghĩ câu hỏi của bạn đại loại là: cho các hàm f và g, f có luôn đúng là O(g) hay g là O(f) không? Đây là trong Khoa học máy tính SE
thuật toán - Nếu f(n) = o(g(n)), g(n) + f(n)=Θ(g(n))?
Nếu tôi chứng minh được rằng f(n) = o(g(n)) (o nhỏ), thì tổng của hai hàm f(n) + g(n) này sẽ được nén bằng hàm "lớn hơn" g( n) Sự ràng buộc chặt chẽ. Tuy nhiên, tôi đang gặp một số khó khăn khi chứng minh điều này. Câu trả lời tốt nhất là
C++: Điền vector-6ren từ đường ống
C++: Điền vectơ từ đường ống - Tôi muốn điền vectơ của mình từ dòng lệnh: thêm my.txt | myexe.x > result.txt Cách tốt nhất để mở một đường ống trong C++ là gì? Cảm ơn bạn Aman. Câu trả lời hay nhất Vỏ của bạn sẽ mor-6ren
C++: Điền vectơ từ đường ống
Thời gian cập nhật: 2023-11-03 08:08:58
Tôi muốn điền vào
vectơ
Từ dòng lệnh:
thêm my.txt | myexe.x > result.txt
Cách tốt nhất để mở một đường ống trong C++ là gì? Cảm ơn bạn Aman.
Vỏ của bạn sẽ
hơn
Đầu ra tiêu chuẩn được kết nối với
myexe.x
đầu vào tiêu chuẩn. Vì vậy, bạn có thể trực tiếp
Đọc mà không cần phải lo lắng về việc đầu vào đến từ bàn phím hay chương trình khác.
vector myVec;
sao chép(istream_iterator(cin), istream_iterator(),
back_inserter(myVec));
Về C++: Điền vectơ từ đường ống, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/2867666/
c++ - nhận (biến)
các kiểu liệt kê trong C++
Có thể có con trỏ hàm tới hàm mẫu trong C++ không?
c++: Khi nào tôi nên bắt đầu sử dụng "new char[N]" so với bộ đệm tĩnh "char[Nmax]"
Các kiểu liệt kê trong C++ - 6ren
Các loại Enum trong C++ - loại này hoạt động: enum TPriority { EPriorityIdle = -100, EPriorityLow = -20, EPriorityStandard = 0, -6ren
enum ưu tiên
EPPriorityIdle = -100,
EPriorityLow = -20,
Tiêu chuẩn ưu tiên EP = 0,
EPPriorityUserInput = 10,
EPPriorityCao = 20
Mức độ ưu tiên TPiority = EPiorityIdle;
Nhưng điều này không hoạt động:
Mức độ ưu tiên TPiority = -100;
Có lý do gì không?
Nó cũng hoạt động, nhưng bạn cần loại rõ ràng
Mức độ ưu tiên TPority = (TPrority)-100;
Về các kiểu liệt kê trong c++ - C++, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/2839823/
Đã phát hiện rò rỉ bộ nhớ bằng cách sử dụng con trỏ kiểu char trong std::list
android — lấy (biến) -6ren
c++ - gets(variable) - Có ai có thể cho tôi biết lý do tại sao get(abc) sử dụng char[] thay vì int không? int abc; tên ký tự [] =
Có ai có thể cho tôi biết tại sao get(abc) sử dụng char[] thay vì int không?
int abc;
tên char[] = "lolrofl";
printf("Xin chào %s.\n",name);
printf("\n >> ");
được(abc);
printf("\n die zahl ist %i.\n",abc);
hệ thống ("Tạm dừng");
được()
Nguyên mẫu là:
char* được(char *s);
Lưu ý rằng hàm này không chỉ đọc một ký tự và đặt nó vào s; nó thực sự đọc toàn bộ chuỗi vào s. Tuy nhiên, vì get() không cung cấp cách chỉ định số lượng ký tự tối đa cần đọc nên điều này thực sự có thể đọc nhiều ký tự hơn vào s so với số byte được phân bổ cho s. Vì vậy, tính năng này là một vấn đề nghiêm trọng
lỗ hổng tràn bộ đệm
, bạn không bao giờ nên sử dụng tính năng này. Có các chức năng khác an toàn hơn cho phép bạn đọc dữ liệu đầu vào của người dùng, chẳng hạn như
fget()
getc()
Nếu bạn đang sử dụng C++, hãy sử dụng
Thư viện luồng I/O C++
(std::cin, std::cout, std::ostream, std::istream, std::fstream, v.v.) là cách tốt hơn để thực hiện đầu vào/đầu ra hơn là sử dụng các chức năng khác này.
Trên thực tế, hàm gets() rất nguy hiểm đối với tôi.
phát triển và mã hóa công cụ tìm kiếm tùy chỉnh
trong, tôi là
Có khuyến mãi trên đó cũng như một số cảnh báo khác không nên sử dụng những tính năng như vậy của nó!
Về c++ - get(variable), chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/2693774/
Quá tải toán tử C++ - 'tạo lại Vector'
Đã phát hiện rò rỉ bộ nhớ bằng cách sử dụng con trỏ kiểu char trong std::list - 6ren
Đã phát hiện rò rỉ bộ nhớ bằng cách sử dụng con trỏ loại char trong std::list - Tại sao tôi gặp lỗi rò rỉ bộ nhớ mà không phân bổ hoặc thêm bất kỳ phần tử nào vào các phần tử được liệt kê bên dưới. Tôi có nên bỏ qua nó? #define CRTDBG_MAP_ALLOC #include #include sử dụng std::l-6ren
Thời gian cập nhật: 2023-11-03 08:08:59
Tại sao tôi gặp lỗi rò rỉ bộ nhớ mà không gán hoặc thêm bất kỳ phần tử nào vào những phần tử được liệt kê bên dưới. Tôi có nên bỏ qua nó?
#xác định CRTDBG_MAP_ALLOC
#include
sử dụng danh sách std::;
liệt kê các gốc ;
_CrtDumpMemoryLeaks();
Trước khi kiểm tra rò rỉ bộ nhớ, bạn đã không đưa ra
rễ
Các biến có cơ hội bị phá hủy. nếu như
Phá hủy trước tiên, bạn sẽ thấy mọi thứ đã được dọn sạch. Hãy thử điều này.
Về C++ - phát hiện rò rỉ bộ nhớ bằng cách sử dụng con trỏ kiểu char trong std::list, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/2653334/
Mã này có hợp lệ hay là trình biên dịch?
Nạp chồng toán tử C++ - 'tạo lại Vector'-6ren
Quá tải toán tử C++ - 'tạo lại Vector' - Tôi hiện đang tham gia lớp lập trình cấp hai ở trường đại học... Chúng tôi đang nghiên cứu về nạp chồng toán tử... Để làm được điều này, chúng tôi sẽ tạo lại lớp vectơ... Tôi đang xây dựng class và phát hiện ra rằng Hầu hết đều dựa trên toán tử []. Khi tôi cố gắng triển khai + toán tử -6ren
Tôi hiện đang theo học lớp lập trình cấp hai ở trường đại học... chúng tôi đang xem xét việc nạp chồng toán tử... mà chúng tôi sẽ xây dựng lại lớp vectơ... Tôi đang xây dựng các lớp và phát hiện ra rằng hầu hết chúng dựa trên
[] toán tử
. Khi tôi cố gắng thực hiện
+ toán tử
Tôi đã gặp phải một lỗi lạ mà giáo sư của tôi chưa từng thấy trước đây (rõ ràng là do lớp chuyển IDE từ MinGW sang VS express...) (Tôi đang sử dụng phiên bản Visual Studio Express 2008 C++... .)
vector.h
#ifndef _VECTOR_H
#xác định _VECTOR_H
const int DEFAULT_VECTOR_SIZE = 5;
dữ liệu int *;
kích thước int;
int comp;
Vector nội tuyến (int Comp = 5, int Size = 0)
: comp(Comp), size(Size) { if (comp > 0) { data = new int [comp] }
khác { dữ liệu = int mới [DEFAULT_VECTOR_SIZE];
comp = DEFAULT_VECTOR_SIZE }
int size_ () const { trả về kích thước }
int comp_ () const { return comp }
bool đẩy_back (int);
bool push_front (int);
void mở rộng();
void mở rộng (int);
khoảng trống rõ ràng();
chuỗi const tại (int);
int& toán tử[ ](int);
int& toán tử[ ](int) const;
Vector& toán tử+ (Vector&);
Vector& toán tử- (const Vector&);
toán tử bool== (const Vector&);
toán tử bool!= (const Vector&);
~Vector() { xóa [] dữ liệu }
ostream& toán tử<< (ostream&, const Vector&);
vector.cpp
#include "Vector.h"
chuỗi const Vector::at(int i) {
cái này[i];
void Vector::expand() {
mở rộng (kích thước);
void Vector::expand(int n ) {
int * newdata = int mới [comp * 2];
if (*data != NULL) {
cho (int i = 0; i <= (comp); i++) {
newdata[i] = dữ liệu[i];
dữ liệu mới -= comp;
comp += n;
dữ liệu = dữ liệu mới;
xóa dữ liệu mới;
khác nếu ( *data == NULL || comp == 0) {
dữ liệu = int mới [DEFAULT_VECTOR_SIZE];
comp = DEFAULT_VECTOR_SIZE;
kích thước = 0;
bool Vector::push_back(int n) {
nếu (comp = 0) { mở rộng();
cho (int k = 0; k != 2; k++) {
if (kích thước != comp ){
dữ liệu[kích thước] = n;
kích thước++;
mở rộng();
void Vector::clear() {
xóa [] dữ liệu;
comp = 0;
int& Vector::operator[] (int place) { return (data[place] }
int& Vector::operator[] (int place) const { return (data[place] }
Vector& Vector::operator+ (Vector& n) {
int temp_int = 0;
if (size > n.size_() || size == n.size_()) { temp_int = size }
nếu không thì if (size < n.size_()) { temp_int = n.size_() }
Vector newone(temp_int);
int temp_2_int = 0;
cho (int j = 0; j <= temp_int &&
j <= n.size_() &&
j <= kích thước;
j++) {
temp_2_int = n[j] + dữ liệu[j];
newone[j] = temp_2_int;
trả lại cái mới;
ostream& operator<< (ostream& out, const Vector& n) {
for (int i = 0; i <= n.size_(); i++) {
ra << n[i] << " ";
ra << n[i] << " "; lỗi C2678:
Nhị phân '[': Toán tử lấy toán hạng bên trái thuộc loại 'const Vector' không tìm thấy (hoặc không có chuyển đổi được chấp nhận)
lỗi C2106: '=": toán hạng bên trái phải là giá trị
Như đã đề cập ở trên, tôi đang theo học chuyên ngành khoa học máy tính và tôi muốn nhận được các mẹo, gợi ý và cách thực hiện công việc tốt hơn :D
toán tử int[ ](int);
Là một hàm không phải là thành viên const. Điều này có nghĩa là nó không thể ở trong
vectơ const
trong cuộc gọi.
Thông thường, toán tử chỉ số dưới được triển khai để trả về một tham chiếu (nếu bạn trả về một giá trị, giống như bạn đang làm, bạn không thể sử dụng nó làm giá trị, ví dụ: bạn không thể làm như vậy
newone[j] = temp_2_int;
Giống như bạn làm trong mã của mình):
int& toán tử[](int);
Để có thể gọi nó trên đối tượng const, bạn cũng nên cung cấp phiên bản const của hàm thành viên:
const int& toán tử[](int) const;
Vì bạn đã yêu cầu "mẹo, hướng dẫn và cách thực hiện tốt hơn:"
Bạn không thể đặt tên cho người bảo vệ bao gồm của mình
_VECTOR_H
. Tên bắt đầu bằng dấu gạch dưới, theo sau là chữ in hoa được dành riêng cho việc triển khai. có
rất nhiều quy tắc về dấu gạch dưới
được sử dụng trong tiêu đề
nên được thông qua
const Vector&
, vì nó không sửa đổi các tham số của nó.
nên trả lại một
và phải phù hợp với ngữ nghĩa của vùng chứa thư viện chuẩn C++ (tức là nếu
Ngoài phạm vi. Bạn cần sử dụng
(*cái này)[i]
gọi quá tải
Những điều bạn cần biết
Vai trò của người vận hành. Ở một số nơi, bạn nhầm lẫn con trỏ với đối tượng mà chúng trỏ tới.
Lưu ý rằng
sự xáo trộn (ví dụ, trong
nếu (comp = 0)
ở giữa). trình biên dịch
Cảnh báo bạn về điều này. Đừng bỏ qua các cảnh báo.
nếu bạn đảm bảo
sẽ không bao giờ là NULL, logic của bạn sẽ đơn giản hơn nhiều.
Về việc nạp chồng toán tử C++ - 'tạo lại Vector', chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/2567784/
c++ - Câu hỏi về cuộc gọi theo tham chiếu?
Trình liên kết quyết định nơi thực thi mã sẽ bắt đầu như thế nào? [Nhúng]-6ren
Trình liên kết quyết định nơi thực thi mã sẽ bắt đầu như thế nào? [Nhúng] - Là người mới bắt đầu lập trình C nhúng, tôi tò mò làm thế nào mọi việc thực thi chương trình (theo kinh nghiệm của tôi) lại bắt đầu từ hàm main()? Nó giống như trình liên kết nhận ra main() và đặt địa chỉ của hàm "đặc biệt" đó vào địa chỉ được chỉ ra bởi vectơ đặt lại. -6ren
Thời gian cập nhật: 2023-11-03 08:09:22
Là người mới bắt đầu lập trình C nhúng, tôi tò mò muốn biết mỗi lần thực hiện chương trình (theo kinh nghiệm của tôi) bắt đầu như thế nào
Chức năng đã bắt đầu? Điều này giống như nhận dạng mối liên kết
và đặt nó
"đặc biệt"
Địa chỉ của hàm được đưa vào địa chỉ được chỉ ra bởi vectơ đặt lại.
Thông thường, tập lệnh trình liên kết tạo một phần đặc biệt ánh xạ tới vectơ đặt lại và chứa lệnh nhảy/goto trỏ đến mã khởi động C, mã này sẽ gọi main().
Giới thiệu về c++ - Trình liên kết quyết định nơi thực thi mã sẽ bắt đầu như thế nào? [Được nhúng], chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/33045820/
c++ - Sự khác biệt trong khởi tạo mảng ký tự
c++ - Tìm các phần tử trong bản đồ theo giá trị
Cách tạo một tuyên bố từ khóa tùy chỉnh
Đệ quy hàm trong C++
Xác định vectơ có kích thước cố định trong lớp trong C++? -6ren
Xác định vectơ có kích thước cố định trong lớp trong C++? -Sau đây là một phần của mã C++ của tôi class Myclass { public: vector >edg(51); // >edg(51); // Khai báo toàn cục-6ren
Xác định vectơ có kích thước cố định trong lớp trong C++?
Thời gian cập nhật: 2023-11-03 08:10:52
Sau đây là một phần mã C++ của tôi
vector< vector >edg(51); // <--- Dòng này báo lỗi
// Phương thức của tôi ở đây
Dòng được đánh dấu trong nhận xét cho tôi lỗi:
định danh dự kiến trước hằng số
được mong đợi ',' hoặc '...' trước hằng số
Nhưng khi tôi làm như sau thì nó biên dịch không có lỗi
vector< vector >edg(51); // Khai báo toàn cục hoạt động tốt
Tôi đã tìm ra nó, ngay cả khi tôi chỉ xác định
vectơ < vectơ >edg
Trong cách tiếp cận đầu tiên, nó hoạt động tốt, vì vậy vấn đề là ở kích thước không đổi
, Tôi dường như không hiểu. Tôi đã thử tìm kiếm trên google nhưng vì khái niệm oop của tôi yếu và tôi không hiểu lắm nên có ai có thể giải thích tại sao điều này xảy ra không?
Đây là một hạn chế. Xác định các thành viên của lớp. Nếu bạn muốn một vectơ có kích thước cố định, chỉ cần sử dụng
Thế là xong, điều này sẽ cho phép bạn làm điều đó.
mảng< vector, 51 >edg;
Ngoài ra, bạn có thể khai báo kích thước trong hàm tạo:
vector< vector >edg;
Myclass() : edg(51) {}
Xác định vectơ có kích thước cố định trong lớp trong C++? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/28968226/
c++ - Tự động thiết lập khởi tạo, điều kiện và tăng/giảm vòng lặp for
Tại sao đầu ra của chương trình C++ này tạo ra sự nhầm lẫn lớn trong cmd?
"Không khớp với toán tử-" lỗi khác biệt của trình lặp đơn giản
c++ - Tự động thiết lập khởi tạo, điều kiện và tăng/giảm cho vòng lặp-6ren
c++ - Tự động thiết lập khởi tạo, điều kiện và tăng/giảm của vòng lặp for - Hiện tại, tôi phải viết ra nhiều vòng lặp for mà tất cả đều thực hiện cùng một tác vụ, khác nhau về khởi tạo, điều kiện và mức giảm/tăng trong chính vòng lặp > for - . Đây là một ví dụ tương tự tôi có cho đến nay: if(some_bool_condi-6ren
Hiện tại tôi phải viết ra nhiều
vòng lặp for
, tất cả đều thực hiện cùng một nhiệm vụ, sự khác biệt là
Khởi tạo, điều kiện và tăng/giảm trong vòng lặp >for
Đây là một ví dụ tương tự tôi có cho đến nay:
if(some_bool_condition)
for(int i = 0; i < 5; i++)
for(int i = 10; i >= 5; i--)
// làm điều tương tự
Có mẹo hay kỹ thuật nào tôi có thể sử dụng để chuyển đổi những thứ này không?
Hợp nhất với nhau?
int start = 0; // hoặc một số giá trị khác
int end = 5; // cũng vậy
int delta = 1; // 1 hoặc -1
cho ( int i = bắt đầu; i != kết thúc; i += delta )
Tất nhiên, mức tăng phải được lựa chọn cẩn thận để
đến thực sự chính xác
Về c++ - tự động thiết lập khởi tạo, điều kiện và tăng/giảm vòng lặp for, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/28868452/
nullptr_t không được xác định trên g++ 4.9.2
C++: Đầu ra không mong đợi-6ren
C++: Đầu ra không mong đợi - Tôi có mã sau: int a , b , sum; cin>>a>>b; sum=a+b; cout>a>>b>>c<;
int a , b , tổng;
cin>>a>>b;
tổng=a+b;
cout<>a>>b>>c;
cout<<><><>(&val);
khẳng định(byte[sizeof(int) - 1] == 0x01);
...nhưng khẳng định sau đây thành công...
khẳng định (byte [0] == 0x01);
Sau đó, các byte dường như bị đảo ngược. Giả định của tôi về thứ tự byte có sai không? Trình biên dịch (clang) hoặc ngôn ngữ có thứ tự byte trừu tượng không? Chuyện gì đang xảy ra vậy?
Giả định của bạn là ngược lại. Trong ký hiệu little-endian, giá trị nguyên 32-bit của 1 trong hệ thập lục phân là
0x00000001
, nhưng được biểu thị bằng byte là
0x01 0x00 0x00 0x00
Về thứ tự byte C++ khi chuyển đổi mảng int thành mảng byte, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/27997319/
Làm cách nào để đặt nhiều điều kiện trong câu lệnh while? (c++)
c++ - Cách diễn giải chính xác các số (hex, thập phân, thập phân) - 6ren
Cách diễn giải chính xác các số (hex, thập phân, thập phân) - Tôi đang cố gắng viết một chương trình lấy đầu vào ở dạng hex, bát phân và thập phân, lưu trữ chúng trong các biến số nguyên và cộng chúng lại với nhau. Chúng được chuyển đổi thành dạng thập phân và xuất ra cùng nhau. Ví dụ: Đầu vào của người dùng: 0x43, 0123, 65 Đầu ra chương trình: 0x43 he-6ren
Thời gian cập nhật: 2023-11-03 08:12:15
Tôi đang cố gắng viết một chương trình lấy đầu vào ở dạng hex, bát phân và thập phân, lưu trữ chúng trong các biến số nguyên và xuất chúng cùng với việc chuyển đổi sang dạng thập phân. Ví dụ:
Người dùng nhập: 0x43, 0123, 65
Hệ thập lục phân 0x43 chuyển đổi thành 67 thập phân
0123 bát phân chuyển đổi thành 83 thập phân
65 thập phân chuyển đổi thành 65 thập phân
Rõ ràng là tôi cần một cách để diễn giải những con số này, nhưng tôi không chắc chắn bằng cách nào. Tôi đã thử nhiều cách tiếp cận khác nhau như đọc chúng thành hàm và chuyển đổi chúng thành chuỗi và ngược lại (xem ví dụ về mã
), nhưng việc diễn giải các số luôn yêu cầu chuyển đổi sang một số định dạng làm mất đi dữ liệu đầu vào ban đầu.
Điều duy nhất tôi có thể nghĩ đến là nạp chồng toán tử >> đọc từng ký tự một và nếu nó thấy 0x hoặc 0 ở đầu đầu vào thì nó sẽ lưu toàn bộ đầu vào vào một chuỗi trước khi đọc số nguyên. Sau đó, chương trình bằng cách nào đó sẽ phải xác định bộ điều khiển chính xác trong quá trình xuất.
Không chắc có cách nào dễ dàng hơn để thực hiện việc này hay không, mọi trợ giúp đều sẽ được đánh giá cao.
EDIT: Điều này đã được giải quyết nhưng tôi quyết định đăng mã trong trường hợp có ai quan tâm.
#include "std_lib_facilities.h"
void number_sys(chuỗi số, chuỗi& s)
if(num[0] == '0' && (num[1] != 'x' && num[1] != 'X')) s = "bát phân";
else if(num[0] == '0' && (num[1] == 'x' || num[1] == 'X')) s = "thập lục phân";
else s = "thập phân";
cout << "Nhập số ở dạng hex, dec hoặc oct. Sử dụng 0xx để hủy.\n";
chuỗi a;
while(cin >> a){
if(a == "0xx")break;
chuỗi không giống nhau;
number_sys(a, atype);
int anum = strtol(a.c_str(), NULL, 0);
cout << a << setw(20-a.length()) << atype << setw(20) << "chuyển đổi thành" << setw(10)
<< anum << setw(10) << "thập phân\n";
keep_window_open();
Hãy xem hàm strtol.
char * args[3] = {"0x43", "0123", "65"};
giá trị int dài = strtol(args[i], NULL, 0);
printf("%s chuyển đổi thành %d thập phân\n", args[i], value);
0x43 chuyển đổi thành 67 thập phân
0123 chuyển đổi thành 83 thập phân
65 chuyển đổi thành 65 thập phân
Về c++ - cách diễn giải chính xác các số (hex, thập phân, thập phân), chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/1195979/
Các vấn đề về khai báo và định nghĩa toán tử bị quá tải trong C++
java — Big O và duyệt cây
c++ - Truy cập đồng bộ vào các biến
Sử dụng cờ nhị phân để thể hiện trạng thái, tùy chọn, v.v.
tăng, tăng trước và tăng sau - 6ren
c++ - tăng, tăng trước và tăng sau - vui lòng giúp tôi giải quyết vấn đề này. Các bước theo sau biểu thức này là: //Biểu thức offSpring1[m1++] = temp1; //Các bước: 1.- tăng m1 2.- gán te-6ren
c++ - tăng, tăng trước và tăng sau
Thời gian cập nhật: 2023-11-03 08:13:47
Xin hãy giúp tôi giải quyết vấn đề này. Các bước theo biểu thức này là:
//Sự biểu lộ
offSpring1[m1++] = temp1;
// Các bước:
1.- tăng m1
2.- gán temp1 cho offSpring
Tôi luôn nghĩ rằng biểu thức trong ngoặc được thực hiện trước tiên. Nhưng bây giờ tôi đang bối rối. Vì vậy, nếu bạn viết như thế này:
offSpring1[++m1] = temp1;
// Các bước sẽ là:
1.- gán temp1 cho offSpring
2.- tăng m1
Nếu các bước giống như bước đầu tiên thì sự khác biệt giữa i++ và ++i là gì?
std::cout << i++ << std::endl;
std::cout << i << "\nreset" << std::endl;
std::cout << ++i << std::endl;
std::cout << i << std::endl;
Trả về giá trị hiện tại trong một biểu thức, sau đó tăng biến.
++tôi
Sẽ tăng biến và sau đó trả về giá trị được sử dụng trong biểu thức hiện tại.
Về c++ - tăng, tăng trước và tăng sau, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/9298020/
Câu lệnh If trong C++ không hoạt động
Tại sao C++ STL không cung cấp một bộ vùng chứa an toàn theo luồng?
Triển khai trình lặp đơn giản C++
Mảng ký tự 2D hình chữ nhật trong C++
Cái nào nhanh hơn, sắp xếp một vectơ rồi đặt nó vào cây AVL hay gõ trực tiếp? -6ren
Cái nào nhanh hơn, sắp xếp một vectơ rồi đặt nó vào cây AVL hay gõ trực tiếp? -Tình huống là thế này: Tôi có hàng triệu (có thể là hàng tỷ) chuỗi và tôi đang cố phân tích các chuỗi này và đặt chúng vào một cấu trúc được sắp xếp, giả sử tôi có 5.000.000 chuỗi. Tôi đang cố gắng viết một chương trình nhanh có thể chuyển đổi tất cả các chuỗi này từ -6ren chưa được sắp xếp
Cái nào nhanh hơn, sắp xếp một vectơ rồi đặt nó vào cây AVL hay gõ trực tiếp?
Thời gian cập nhật: 2023-11-03 08:15:20
Tình hình là thế này:
Tôi có hàng triệu (có thể là hàng tỷ) chuỗi mà tôi đang cố phân tích cú pháp và đưa vào cấu trúc được sắp xếp, giả sử tôi có 5.000.000 chuỗi. Tôi đang cố gắng viết một chương trình nhanh có thể đặt tất cả các chuỗi này từ một vectơ chưa được sắp xếp vào cấu trúc dữ liệu có thứ tự cũng có thể được tìm kiếm nhanh chóng cho các cấu trúc, do đó suy luận về cây AVL (cuối cùng tôi dự định sử dụng ha az cho bảng băm để tra cứu nhanh hơn, nhưng điều đó sẽ đến sau). Đầu tiên tôi đặt tất cả các chuỗi vào một vectơ nhưng chúng đều lộn xộn, không được sắp xếp và có độ dài khác nhau. Tôi không muốn bất kỳ chuỗi trùng lặp nào xuất hiện trong cây của mình, vì vậy nếu chương trình tìm thấy các chuỗi "hello" và "hello", nó sẽ chỉ có một mục nhập AVL và một giá trị giữ số nguyên sẽ được tăng lên để biểu thị sự xuất hiện của chuỗi đó Tính thường xuyên.
Vì vậy, câu hỏi của tôi là: trước tiên có thể sắp xếp vectơ nhanh hơn (sử dụng thứ gì đó như sắp xếp nhanh đa luồng hoặc sắp xếp nhanh khác) rồi đưa nó vào cây AVL, sau khi tất cả các từ được sắp xếp cùng với các từ khác? hoặc sẽ nhanh hơn nếu chỉ đặt tất cả dữ liệu trong vectơ chưa được sắp xếp vào cây AVL và tiếp tục kiểm tra cây AVL để xem liệu một từ đã tồn tại chưa rồi tăng nó lên.
Vì vậy có hai tình huống để mô tả nó theo thứ tự thực hiện:
TRƯỜNG HỢP A:
> Nhận chuỗi đầu vào/phân tích
> Đặt chuỗi vào vector (chưa sắp xếp)
> Đưa vector vào mảng hoặc danh sách liên kết
> Sắp xếp nhanh mảng/danh sách đó
> Nhập mảng đã sắp xếp đó vào Cây AVL
TRƯỜNG HỢP B:
> Chèn dữ liệu vector vào cây AVL
> Trong quá trình chèn, kiểm tra xem có từ nào trùng lặp không, nếu có thì tăng bộ đếm
Trường hợp nào nhanh hơn? ?
--biên tập--
Vì vậy, sau khi nghe một số nhận xét, sẽ là một ý tưởng tồi nếu chèn một mảng đã sắp xếp vào cây AVL ngay từ đầu, với số lượng phép quay sẽ hợp lý. Có vẻ như chèn trực tiếp vào cây AVL có thể là một ý tưởng hay, nhưng cách tốt nhất để chèn hiệu quả khi một từ đã ở đâu đó trong cây là gì? Làm thế nào tôi có thể chắc chắn rằng tôi tìm thấy nó? Đây có phải là nơi việc sắp xếp của tôi có thể phát huy tác dụng không?
Hãy suy nghĩ về cách cân bằng cây AVL. Nó hoạt động tốt nhất nếu "giá trị trung bình" đến trước. Với đầu vào được sắp xếp, bạn sẽ cần phải cân bằng lại rất nhiều, vì vậy việc sắp xếp trước có thể gây hại nhiều hơn là có lợi.
Ví dụ: hãy xem xét cây AVL sau chứa các giá trị 1-6:
2 5
1 3 6
Nếu thứ tự đầu vào là
4, 2, 5, 1, 3, 6
, bạn không bao giờ cần một cây cân bằng. Ngược lại, đối với đầu vào được sắp xếp
1, 2, 3, 4, 5, 6
, bạn sẽ cần nhiều thao tác tái cân bằng:
1 +3 2 +4 2 +5 2 +6 3
\ ---> / \ ---> / \ ---> / \ ---> / \
2 1 3 1 3 1 4 2 5
\ / \ / / \
4 3 5 1 4 6
Câu hỏi ban đầu là liệu việc sắp xếp dữ liệu trước khi chèn vào cây AVL có cải thiện hiệu suất hay không. Bây giờ OP đã chỉnh sửa câu hỏi để chuyển sang câu hỏi cụ thể của mình.
nhưng cách tốt nhất để chèn một cách hiệu quả khi một từ đã có trong cây ở đâu đó? Làm cách nào để đảm bảo rằng tôi tìm thấy nó?
Mục đích chung của cây AVL là tìm kiếm dữ liệu một cách hiệu quả
, nên tôi không hiểu vấn đề. Rõ ràng là làm thế nào để duyệt qua cây tìm kiếm nhị phân để tìm một giá trị. Tại sao bạn cần sắp xếp dữ liệu cho việc này?
Lưu ý rằng cây tìm kiếm nhị phân là một nơi lưu trữ tốt
chìa khóa
cấu trúc dữ liệu nhưng nó cũng có thể quản lý dữ liệu tùy ý liên quan đến các khóa này. Trong trường hợp của bạn, bạn muốn lưu trữ số lượng cùng với khóa. Vì vậy, bạn không cần cây từ/chuỗi mà là cây các cặp (chuỗi, số nguyên) biểu thị các từ và số đếm của chúng. Để sắp xếp cây, chỉ cần xem xét các khóa chuỗi, tức là các từ.
Đối với mỗi từ được chèn vào, hãy tra cứu nó trong cây. Nếu nó đã tồn tại, hãy cập nhật số từ. Nếu không, hãy chèn một cặp mới có số từ là 1.
Một lưu ý cuối cùng: thư viện chuẩn C++ đi kèm với một
Loại, thường (luôn luôn?) được triển khai bằng cây cân bằng (AVL hoặc đỏ-đen). Chỉ cần sử dụng cách triển khai này sẽ giúp bạn tiết kiệm rất nhiều công sức và sửa lỗi. Kể từ C++ 11, cũng có một
, thường (luôn luôn?) được triển khai bằng bảng băm.
Về c++ - Cái nào nhanh hơn, sắp xếp một vectơ rồi đặt nó vào cây AVL hoặc gõ trực tiếp? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/27100192/
Trả về một mảng toàn cục trong C++
c++ - Ghi đè nhiều lần kiểm tra trong điều kiện IF
Các thành viên nội tuyến của một lớp được biên dịch như thế nào?
Android, Eclipse, đưa .jar vào "lib"&"thêm đường dẫn xây dựng" và đưa .jar vào "libs"
Tôi đang cố gắng thêm thư viện loopj .jar vào dự án của mình trong Eclipse v3.7.2 Trước tiên, tôi đã thêm .jar vào thư mục "lib", nhấp chuột phải vào nó và chọn "Thêm vào đường dẫn xây dựng". Nó biên dịch tốt nhưng khi thực thi tôi gặp lỗi
c++ - Đặt [][] vào **
Câu hỏi này đã có câu trả lời ở đây: đã đóng cửa 10 năm trước. Có thể trùng lặp: Truyền mảng hai chiều qua bảng int con trỏ [20
grafana - điểm dữ liệu cuối cùng được đưa vào biểu đồ Grafana
Biểu đồ của tôi trong Grafana tự động cập nhật vài giây một lần. Điểm dữ liệu cuối cùng bên phải sẽ giảm xuống trong giây lát khi có dữ liệu. Cuối cùng, giá trị chính xác được hiển thị, nhưng trên một số bản cập nhật, giá trị này thấp hơn. Điều này có bình thường không? Nó có thể được sửa chữa? Câu trả lời hay nhất có thể là sẽ có
Java - Ngoại lệ trạng thái bất hợp pháp khi đưa vào Bản đồ
Tôi không hiểu tại sao tôi lại nhận được "IllegalStateException" khét tiếng với đoạn mã sau: private void mergeQueryStrings(String url, Map parame
java - các biến được đưa vào đối tượng JSON
Xin chào, tôi đang liên kết một ứng dụng Android thử nghiệm với cơ sở dữ liệu MySQL thông qua JSON echo trong tệp .php. Tôi đã có thể điền toàn bộ dữ liệu vào ArrayList, nhưng bây giờ tôi muốn tách dữ liệu thành các biến nhưng tôi thực sự không thể tìm thấy
Đưa vào ByteBuffer và sau đó ghi nó vào một tệp sẽ hiệu quả hơn việc ghi vào một trường duy nhất
Tôi chỉ muốn ghi các giá trị của các thành viên dữ liệu của đối tượng vào file nên ở đây tôi không thể sử dụng serialization vì nó sẽ ghi rất nhiều thông tin khác mà tôi không cần. Tôi đã đạt được điều này theo hai cách. Một cái sử dụng bộ đệm byte còn cái kia thì không. Không sử dụng ByteBuffer: Chương
javascript - thuộc tính biến biến mất khi được đặt trong div
Có thể là một câu hỏi đơn giản nhưng tôi dường như không thể tìm thấy câu trả lời. Tôi đang tạo động một trang nơi tôi có thể chia sẻ liên kết Twitter. var twitter = document.createElement('a');
java - cách thích hợp để đưa vào lớp tiện dụng?
php - Tìm nạp truy vấn, đưa vào $_Session
Cố gắng lấy giá trị tôi đặt cho $_SESSION ở cuối dưới dạng user_id trong truy vấn, không phải $username. Tôi dường như không thể sửa đổi truy vấn. Tôi chắc chắn rằng điều này rất đơn giản đối với một số chuyên gia ở đây. if(isset($_POS
mysql - truy vấn dài được đưa vào hàm CI không hoạt động
Ai có thể giúp tôi không, tôi có truy vấn mysql, tôi đã thử nó trong phpmyadmin: select items.name, items.category, items.supplier_id, i
Có thể đặt dấu ngoặc kép () vào Char được không
Tôi đang cố gắng push_back() một biểu tượng std::vector. Tôi liên tục gặp lỗi: ký tự quá lớn để bao quanh ký tự chữ t.
Cách đưa ký tự thô * vào AVPacket
Tôi có một hình ảnh nén được lưu trữ trong char * và tôi muốn đặt nó trở lại AVPacket để tôi có thể đặt nó vào bộ giải mã ffmpeg. Ai đó có thể chỉ ra cách thực hiện việc này? Bất kỳ ví dụ hoặc hướng dẫn nào sẽ được đánh giá cao. Cảm ơn trước vì câu trả lời hay nhất tôi muốn
python - cần trợ giúp để đưa cái khác vào trong khi với bộ đếm
mật khẩu = str() while mật khẩu != "changeme": mật khẩu = input("Mật khẩu:") print("Bạn sẽ
Vì vậy, tôi có một Bản đồ với một số giá trị được truyền vào một phương thức: public String doThis(Map context){..... } Tôi đang cố gắng chèn một thuộc tính bổ sung String abc vào bản đồ này
Tôi đang gặp phải một số vấn đề mà tôi không thể hiểu được... Tôi đang viết một ứng dụng Swing Java có JList chấp nhận kéo và thả. Tôi muốn thay đổi con trỏ khi kéo tệp hoặc thư mục từ hệ thống của tôi vào ứng dụng Java. Tự mình trả lời hay nhất
Quy ước về số lượng chi tiết được đưa vào thông báo ngoại lệ Python?
Tôi đang cố gắng xác định một số nguyên tắc về cách viết thông báo ngoại lệ. Ví dụ: giả sử một hàm giả định phải nhận số byte không đổi (dưới dạng đối tượng byte), hãy sử dụng [1, 2, 3]. Sau đây là tất cả các tình huống ngoại lệ có thể xảy ra
Làm cách nào để đặt NHÂN ĐÔI với vị trí thập phân vào JSONObject?
Gửi tới dịch vụ web bằng JSONObject Khi chúng ta đặt double(số nguyên) về 0, điểm sẽ bị xóa mã double d = 123.00; JSONObject json = new JSONObje;
WPF: Đưa DataGrid vào ComboBox
Trong WPF, làm cách nào để đặt DataGrid bên trong ComboBox để hiển thị nhiều cột? Một cái gì đó như sau dường như không làm gì cả:
qt - Cách đặt QStandardItem tùy chỉnh vào QListView
Tôi đang cố gắng sử dụng QStandardItem tùy chỉnh để kéo và thả giữa hai QListView. Tôi không thể tìm thấy thông tin tôi cần trực tuyến ngoại trừ tài liệu này có phần hữu ích nhưng hiện tại tôi đang bị mắc kẹt. từ một QLi
iphone - Đưa PDF vào NSData
Làm cách nào để đưa PDF vào NSData? Tôi đã tìm thấy vị trí của tệp PDF dưới dạng một chuỗi trong thư mục tài liệu của ứng dụng. Khi tôi cố gắng gửi qua email, tôi thấy tệp PDF trong nội dung email (thay vì nhìn thấy biểu tượng tệp đính kèm. Tôi không biết điều này có bình thường không)
Trả về một mảng toàn cục trong C++ - 6ren
Trả về một mảng toàn cục trong C++ - Làm cách nào để trả về một mảng toàn cục được điền bên trong một hàm để tôi có thể sử dụng nó trong các hàm khác trong C++? Ví dụ: #include #include sử dụng không gian tên std;
Làm cách nào để trả về một mảng toàn cục được điền bên trong một hàm để tôi có thể sử dụng nó trong các hàm khác trong C++?
int toàn cầu[10]
// ĐĂNG NHẬP Mảng TẠI ĐÂY
hàm intReturnArray()
cho(i=0;i<=9;i++)
toàn cầu[i] =i;
nếu(i==9)
trở lại toàn cầu;
}//đóng hàm
int local = functionReturnArray();
for(int i=0;i<10;i++)
local[i];// TÔI MUỐN SỬ DỤNG Mảng TẠI ĐÂY
Làm cách nào để trả về một mảng toàn cục đã được điền bên trong một hàm để tôi có thể sử dụng nó trong các hàm khác trong C++?
Bạn không thể trả về một mảng trong C++ hoặc chuyển nó vào một hàm vì mảng "phân rã" thành một con trỏ tới phần tử đầu tiên của chúng.
Thay vào đó bạn có thể quay lại
int*
, nhưng như nhận xét ở trên đã nói, nếu mảng là toàn cục, tại sao bạn vẫn cần trả về nó? Globals có thể truy cập toàn cầu và có thể được sử dụng trực tiếp.
Về c++ - Trả về một mảng toàn cục trong C++, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/27081564/
Điều kiện trong việc triển khai hàm mẫu phụ thuộc vào việc loại có phải là con trỏ hay không
c++ - Phỏng vấn - Tìm tổng chẵn các cặp trong một mảng - 6ren
c++ - Phỏng vấn - Tìm các cặp tổng chẵn trong một mảng - Cho một mảng, làm thế nào để trả về các cặp tổng thành một số chẵn? Ví dụ: a[] = { 2 , -6 , 1, 3, 5 } Trong mảng này, logarit của tổng các số chẵn là (2,-6), (1,3) , (1,5) , (3 ,5) Hàm sẽ trả về -6ren
Thời gian cập nhật: 2023-11-03 08:15:21
Cho một mảng, làm thế nào để trả về logarit có tổng là số chẵn?
a[] = { 2 , -6 , 1, 3, 5 }
Trong mảng này, logarit của tổng các số chẵn là (2,-6), (1,3), (1,5), (3,5)
Hàm sẽ trả về 4 vì có 4 cặp hoặc -1 nếu không có.
Độ phức tạp thời gian dự kiến - Trường hợp xấu nhất O(N) Độ phức tạp không gian dự kiến - Trường hợp xấu nhất O(N)
Phương pháp thứ nhất: Brute Force
Bắt đầu với số đầu tiên
Bắt đầu với số thứ hai
gán tổng cho một biến tạm thời
kiểm tra xem nhiệt độ có đều không
Nếu nó tăng số cặp chẵn
tăng chỉ số thứ hai
Độ phức tạp thời gian ở đây là O(N2)
int lẻ = 0, chẵn = 0;
nếu (a[i] % 2 == 0) {
thậm chí++;
lẻ++;
int câu trả lời = (lẻ * (lẻ - 1) + chẵn * (chẵn - 1)) / 2;
Về c++ - Phỏng vấn - Tìm số chẵn và cặp trong một mảng, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/26971251/
Sự khác biệt giữa việc cấp phát bộ nhớ trong struct và main?
c++ - Điều kiện triển khai hàm mẫu phụ thuộc vào loại có phải là con trỏ hay không - 6ren
c++ - Một điều kiện trong việc triển khai hàm mẫu phụ thuộc vào việc loại đó có phải là con trỏ hay không - vì vậy tôi có hàm mẫu này. Nó nên đặt một biến có cấu trúc phức tạp hơn gọi là Tóm tắtEvent: template void Tóm tắtEvent::setVar( QString varN-6ren
Vì vậy, tôi có chức năng mẫu này. Nó phải ở trong một tập tin có tên
Tóm tắtSự kiện
Đặt một biến trong cấu trúc phức tạp hơn:
void Tóm tắtEvent::setVar( QString varName, giá trị T)
nếu (std::is_pointer::value)
void * castValue = static_cast(value);
if(castValue)
// làm điều gì đó với castValue
//làm điều gì đó có giá trị
Sử dụng hàm mẫu này, tôi muốn lưu trữ "giá trị" biến trong QVariant và sau đó lưu trữ QVariant ở đâu đó.
Nếu "giá trị" là một con trỏ, tôi muốn lưu trữ nó trong QVariant dưới dạng void*. Đối với bất cứ điều gì khác tôi muốn lưu trữ loại thực sự.
Tôi đang cố gắng sử dụng tính năng C++ std::is_pointer::value để kiểm tra xem giá trị có phải là con trỏ hay không.
Mã này biên dịch tốt, nhưng khi tôi cố gắng sử dụng nó như sau:
int intValue = 0;
setVar("aVar",intValue);
lỗi C2440: 'static_cast': không thể chuyển đổi từ 'int' thành 'void *'
Tôi nghĩ trình biên dịch bị nhầm lẫn vì nó đang kiểm tra dòng này:
Tất nhiên, điều này không có ý nghĩa khi giá trị không phải là con trỏ. Đây là câu lệnh if của tôi
Tuy nhiên, nên tránh, ngay cả khi chạy, mã có giá trị int này không bao giờ được thực thi và tại thời điểm biên dịch, nó làm trình biên dịch nhầm lẫn... Có cách nào giải quyết loại vấn đề này không?
Phân phối nhãn:
void Tóm tắtEvent::setVar_impl( QString varName, giá trị T, std::true_type /*is_ptr*/)
void Tóm tắtEvent::setVar_impl( QString varName, giá trị T, std::false_type /*is_ptr*/)
void Tóm tắtEvent::setVar( QString varName, giá trị T){
setVar_impl(varName, value, std::is_pointer());
Hoặc, tải lại rồi SFINAE để xóa những cái không áp dụng:
tên kiểu chữ std::enable_if<>::value>::type
Tóm tắtEvent::setVar(QString varName, giá trị T)
mẫu
tên kiểu chữ std::enable_if::value>::type
Tóm tắtEvent::setVar(QString varName, giá trị T)
Tùy chọn thứ ba là tải lại trực tiếp:
void Tóm tắtEvent::setVar( QString varName, giá trị T*)
Mẫu đầu tiên chuyên nghiệp hơn mẫu thứ hai thông qua việc đặt hàng từng phần nên nếu cả hai đều khả thi như nhau thì sẽ được chọn.
Bạn cũng có thể muốn
T == nullptr_t
Tình huống này được xử lý đặc biệt.
Không phải là loại con trỏ, nhưng bạn có thể muốn gọi tình trạng quá tải con trỏ trong trường hợp đó.
Về c++ - điều kiện trong việc triển khai hàm mẫu phụ thuộc vào việc loại đó có phải là con trỏ hay không, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/26466729/
Cách triển khai khác nhau của các hàm nội tuyến cho các đơn vị dịch thuật khác nhau
Sự khác biệt giữa việc cấp phát bộ nhớ trong struct và main? -6ren
Sự khác biệt giữa việc cấp phát bộ nhớ trong struct và main? -Tôi có hai cấu trúc đơn giản như thế này: struct Point{ double x, y }; Sự khác biệt giữa việc xác định struct Circle{ Point *P;
Tôi có hai cấu trúc đơn giản như thế này:
điểm cấu trúc {
gấp đôi x, y;
Sự khác biệt giữa định nghĩa này là gì?
Vòng tròn cấu trúc{
Điểm *P;
bán kính phao;
Điểm *P = Điểm mới;
Nếu tôi sử dụng ví dụ đầu tiên và trong
Có bất kỳ lợi ích nào khi thực hiện một việc như thế này trong một hàm không?
Vòng tròn *C = Vòng tròn mới;
C -> P = Điểm mới;
Sử dụng khởi tạo C++ 11 trong lớp. Điều này có nghĩa là theo mặc định, nếu không có hàm tạo nào khác (điều này không xảy ra trong ví dụ của bạn),
sẽ được đặt thành
điểm mới
cho bất kỳ công trình nào được xây dựng
vòng tròn
. Điều này cũng giống như khi bạn tạo
Vòng tròn
Đăng cài đặt rõ ràng
Ví dụ này tương đương nhưng có ít dòng mã hơn.
Tất nhiên, với mã ví dụ bạn cung cấp, sẽ tốt hơn nếu chỉ sử dụng các giá trị thay vì con trỏ:
Điểm P;
Bằng cách này,
Sẽ luôn có một
, chúng ta không cần phải có những cuộc trò chuyện dài dòng, khó xử về quản lý tài nguyên, rò rỉ bộ nhớ, v.v.
Giới thiệu về c++ - sự khác biệt giữa việc cấp phát bộ nhớ trong struct và main? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/26355210/
Địa chỉ trả về có đảm bảo giá trị trả về không NULL không?
arrays - Cold Fusion 8 : Mảng cấu trúc đến cấu trúc của cấu trúc
Tôi có một mảng items[]. Mỗi mục trong items[] là một cấu trúc. mục có khóa id, ngày, giá trị (tức là item.id, item.date, item.value) Tôi muốn sử dụng Stru
Mảng cấu trúc động trong [Mảng cấu trúc trong [Mảng cấu trúc trong [Mảng cấu trúc]]]
Tôi muốn lưu trữ 100 nhân viên. RollNo, tên, lương, thời gian (nhiều dữ liệu khác nhau, tôi không thể giải thích ở đây, nhưng bạn có thể xem đoạn mã bên dưới để hiểu main() { struct day { inthour
c++ - typedef struct vs struct - kích thước lưu trữ không xác định của 'struct'
Câu hỏi này đã có câu trả lời ở đây: kích thước lưu trữ của 'tên' không được biết (3 câu trả lời) Đã đóng 5 năm trước. Tôi đang thử lập trình bluetooth và gặp phải vấn đề này mà tôi không hiểu. Về cơ bản, khi tôi sử dụng
C struct->struct->struct->element (thường) segfault
Đây là một điều kỳ lạ: Tôi có một cấu trúc chứa các con trỏ tới các cấu trúc cùng loại và các con trỏ tới các cấu trúc thuộc loại khác, cũng như một số giá trị khác. động vật cấu trúc { động vật cấu trúc * cha;
Vấn đề về con trỏ C: &(*struct->struct)
Tôi có một cấu trúc được định nghĩa như sau (các tên khác nhau) struct str1 { int field1; struct str2 } Tôi có một *str1 bên trong một hàm. Tôi muốn một con trỏ tới str2. Vì thế
c - Sự khác biệt giữa struct { ... } và struct { union { struct { ... } } } là gì?
Có lý do nào khiến DISK_DETECTION_INFO được định nghĩa là không? typedef struct _DISK_DETECTION_INFO { Kích thước DWORD
Python struct.pack() 'struct.error: bad char in struct format' khi cố gắng lưu thứ tự byte
Tôi đang cố gắng đóng gói một chuỗi và độ dài của chuỗi. fmt = '
swift 4: cấu trúc trong cấu trúc
Tôi đang gặp sự cố khi tạo cấu trúc. Cấu trúc của tôi: public struct Thiết bị: Codable { let data: DeviceData let meta: Meta } pu?
struct - Làm cách nào để gán giá trị cho các thành viên Struct?
struct Item { Tên var: Chuỗi? Loại var: Chuỗi? Giá trị var: Int? Thẻ var: Int } ... ..
struct - Biểu tượng dấu hoa thị (*struct) có ý nghĩa gì trong golang
// NewReaderSize trả về một Reader mới có bộ đệm có kích thước tối thiểu là 43 // được chỉ định Nếu ar.
C++: ghép vector theo một trong các số nguyên của struct
(trong đó struct có 2 số nguyên) để sắp xếp
Câu hỏi này đã có câu trả lời ở đây: Sắp xếp một vectơ đối tượng tùy chỉnh (14 câu trả lời) Đã đóng 3 năm trước. Trong đoạn mã C++ sau đây, cách sử dụng cấu trúc TwoInts dựa trên
c++ - Sự khác biệt giữa struct S { int Align }; (được đặt tên theo từ khóa struct) và struct { int Align;
#include struct Header { căn chỉnh int dài dài không dấu }; int main(void) { struct Heade
c - con trỏ hàm với các tham số struct trong struct
Tôi có một cấu trúc hiện tại trông như thế này (viết tắt để chỉ hiển thị các phần cơ bản): typedef struct { uint32_t baudrate ... một số nội bộ khác u
Struct bên trong Struct, có thể thay đổi kiểu Struct bên trong
Không có nhiều lời giải thích cho điều này, đây là những gì tôi có: public struct PACKET_HEADER { public string ComputerIp publi;
Rust: Tại sao việc mượn một tham chiếu trong một cấu trúc lại mượn toàn bộ cấu trúc?
Tôi có đoạn mã sau: struct MyStruct{ data: &'a str, } fn get(S: &'a MyStruct) -> &'a str{ S.data } fn se
c - sizeof struct bên trong struct
struct S1 { char c; int i }; struct S3 { char c1 s;
struct - Có cách nào để ẩn trình khởi tạo mặc định cho Swift Struct không?
Tôi có một giao thức tên là Tham số: giao thức Tham số { var name: String { get } var unit: Unit
c - Hạn chế trong “struct Inside struct”
Có 2 cấu trúc xác định A và A. Mình biết struct A có thể chứa POINTER trỏ tới struct A nhưng mình không hiểu tại sao struct A không chứa được struct A (không phải con trỏ) Tốt nhất
struct - Làm cách nào để bạn có được struct-copy để tạo cấu trúc cùng loại với bản gốc?
Để minh họa điều này, đây là một cấu trúc bất biến nhỏ và một hàm cập nhật nó: (struct timeseries (variable obsies) #:transparent) (define (ad
Bảo vệ ảo + C++? -6ren
Bảo vệ ảo + C++? -Trong C++, tôi có lớp cơ sở A và lớp con B. Cả hai đều có phương thức ảo Visit. Tôi muốn xác định lại "quyền truy cập" trong B, nhưng B cần truy cập mọi chức năng "truy cập" của A (và tất cả các lớp con). Tôi có một cái gì đó tương tự nhưng nó cho tôi biết B none-6ren
Thời gian cập nhật: 2023-11-03 08:17:09
Trong C++, tôi có lớp cơ sở A và lớp con B. Cả hai đều có phương thức ảo Visit. Tôi muốn xác định lại "quyền truy cập" trong B, nhưng B cần truy cập mọi chức năng "truy cập" của A (và tất cả các lớp con).
Tôi có một cái gì đó tương tự, nhưng nó cho tôi biết rằng B không thể truy cập các thành viên được bảo vệ của A! Nhưng B cũng là A :-P!
Vậy tôi có thể làm gì?
Chuyến thăm ảo(...);
lớp B: lớp công cộng A
vector trẻ em;
Thăm nom(...);
B::Tham quan(...)
foreach(A* a ở trẻ em)
a->Tham quan(...);
Bạn có thể truy cập các thành viên được bảo vệ bằng đối tượng của riêng mình, nhưng bạn không thể truy cập các thành viên được bảo vệ bằng đối tượng thay thế trừ khi đó cũng là lớp của bạn (không chỉ là lớp cơ sở).
Có một cách giải quyết, giống như có một cách giải quyết cho việc không kế thừa bạn bè.
Trong mọi trường hợp trong ví dụ này:
chuyến thăm khoảng trống ảo(...);
vô hiệu lượt truy cậpKhác(A& khác, ...)
other.Visit(...);
lớp B: công cộng A
for( auto a : trẻ em)
thămKhác( *a, ... );
Giới thiệu về bảo vệ ảo + C++? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/4562678/
Các luồng độc lập với hệ điều hành trong C++?
c++ - Kế thừa vector và khởi tạo
Tại sao đoạn mã dưới đây lại báo lỗi cho tôi về các lớp trừu tượng?
Mã nguồn mở để triển khai RSA trong C/C++ (sử dụng thư viện hoặc viết mã của riêng bạn)
c++ - Dịch trái một toán hạng 'kép' - 6ren
c++ - Dịch chuyển trái toán hạng 'double' - Hàm sau dịch chuyển sang trái toán hạng kép: double shl(double x,unsigned long long n) { unsigned long long* p = (unsigne-6ren
Thời gian cập nhật: 2023-11-03 08:18:44
Hàm sau dịch chuyển một sang trái
Toán hạng:
double shl(double x,unsigned long long n)
dài không dấu* p = (dài không dấu*)&x;
*p += n << 52;
Chức năng này có được đảm bảo hoạt động trên tất cả các nền tảng không?
Bạn có thể giả sử
Một sự kết hợp hợp lệ của (tức là
x*2^n
sẽ không tràn).
Nói cách khác, tôi đang hỏi liệu tiêu chuẩn ngôn ngữ có chỉ định những điều sau không:
Các bit số mũ của loại là 52,53,54,55,56,57,58,59,60,61,62
Kích thước bit bằng
Kích thước bit bằng 64
Các quy tắc bí danh nghiêm ngặt của
Nếu câu trả lời cho C và C++ khác nhau thì tôi muốn biết về từng câu trả lời.
Không, cả C và C++ đều không chỉ định cách trình bày các loại dấu phẩy động theo tiêu chuẩn ngôn ngữ, mặc dù định dạng IEEE được khuyến nghị và phải có macro (
__STDC_IEC_559__
) để phát hiện xem nó có sẵn và đang được sử dụng hay không.
Ngoài các cách trình bày khác nhau, còn có nhiều vấn đề với giải pháp của bạn. Bạn đã phát hiện ra một vi phạm bí danh nghiêm trọng... trình tối ưu hóa có thể biến toàn bộ hàm của bạn thành không hoạt động do không có sửa đổi nào giữa phần đầu của hàm và giá trị trả về
, có thể giả sử
Không có gì thay đổi. Bạn cũng có thể gặp phải vấn đề tràn - bạn sẽ cần một số dạng thuật toán bão hòa không cho phép đưa kết quả vào bit dấu.
Tuy nhiên, bạn không cần phải loay hoay với điều này vì thư viện chuẩn đã chứa sẵn các hàm bạn muốn viết.
nó được đặt tên
ldexp
ldexpf
Về c++ - dịch chuyển sang trái toán hạng 'kép', chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/25714921/
Xóa một phần tử khỏi danh sách liên kết trong C++
Làm cách nào để tìm một vectơ trong vectơ 2D trong C++?
Làm thế nào để đăng ký nhiều std::array hoạt động?
Kế thừa ảo trong C++ bị hiểu nhầm
c++ - Lỗi: không thể chuyển đổi 'p1' từ 'Person (*)()' thành 'Person'-6ren
c++ - Lỗi: không thể chuyển đổi 'p1' từ 'Người (*)()' thành 'Người' - Tôi hiểu lỗi: không thể chuyển đổi 'p1' từ 'Người (*)()' thành 'Người' bất cứ khi nào Khi tôi sử dụng hàm tạo mặc định (khi tôi tạo Person p1), tôi biết -6ren
lỗi: không thể chuyển đổi 'p1' từ 'Người (*)()' thành 'Người'
Bất cứ khi nào tôi sử dụng hàm tạo mặc định (khi tôi tạo Person p1) tôi biết đó là vì tôi đang sử dụng mảng char nhưng tôi phải sử dụng nó, tôi không thể sử dụng chuỗi
Tôi cũng nhận được 2 cảnh báo
cảnh báo: chuyển đổi sang loại 'char' không phải con trỏ từ NULL [-Wconversion-null]|
trong hàm tạo mặc định
cảnh báo: chuyển đổi không được dùng từ hằng chuỗi thành 'char*' [-Wwrite-strings]|
Khi tôi tạo Người p2
lớp người {
tên char*;
giới tính char;
Người();
Người(char*, char, int);
bạn bè void printInfo(Person);
Người::Người()
:name(NULL), giới tính(NULL), age(0) // điều này dẫn đến cảnh báo đầu tiên
Người::Người(char* n, char g, int a)
:tên(n), giới tính(g), tuổi(a)
void printInfo(Người p){
cout << "Tên: " << p.name << endl;
cout << "Tuổi: " << p.age << endl;
cout << "Giới tính: " << p.gender << endl;
Người p1(); // điều này dẫn đến lỗi
printInfo(p1);
Person p2("Max", 'm', 18); // điều này dẫn đến cảnh báo thứ hai
printInfo(p2);
bạn đã gặp
Người p1();
khai báo một tập tin có tên
hàm trả về một
và không chấp nhận bất kỳ tham số nào. Nếu bạn muốn xây dựng một hàm tạo mặc định có tên
đối tượng, chỉ cần nói
Người p1;
Về c++ - Lỗi: không thể chuyển đổi 'p1' từ 'Person (*)()' thành 'Person', chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/25287556/
Đọc chuỗi kết thúc null từ tệp nhị phân C++
Chuyển vòng lặp FOR thành vòng lặp DO WHILE trong C++
Các vòng lặp iota, tạo và thủ công có thực hiện giống nhau không?
C++: Làm cách nào để ngăn vectơ bị phá hủy sau khi trả về từ phương thức? -6ren
C++: Làm cách nào để ngăn vectơ bị phá hủy sau khi trả về từ phương thức? -Tôi đang cố gắng nạp chồng toán tử chia / cho lớp Đa thức, nhưng bản thân thuật toán không liên quan. Vấn đề là C++ dường như đang làm hỏng các đa thức của tôi khi tôi cố gắng trả lại chúng vì một lý do không xác định nào đó. Đây là phần có liên quan của lớp: cla-6ren
C++: Làm cách nào để ngăn vectơ bị phá hủy sau khi trả về từ phương thức?
Thời gian cập nhật: 2023-11-03 08:21:22
đa thức
Toán tử chia quá tải lớp
, nhưng bản thân thuật toán không liên quan. Vấn đề là C++ dường như đang làm hỏng các đa thức của tôi khi tôi cố gắng trả lại chúng vì một lý do không xác định nào đó.
Đây là phần có liên quan của lớp:
lớpĐa thức
........
Đa thức &operator/(const double &) const;
int ĐỘ;
std::vector poly_terms // lưu trữ các hệ số đa thức;
Đây là cách tôi không thể làm cho nó hoạt động:
Đa thức &Đa thức::operator/(const double &rhs) const
Kết quả đa thức(10); //tạo đối tượng đa thức mới với bậc tối đa là 10
bộ đệm đôi;
for(int i = 0; i <= DEGREE; i++)
buffer = poly_terms[i]; //poly_terms có kiểu vector
result.setCoeff(i, buffer / rhs); //phương thức này gán (buffer / rhs) cho chỉ mục thứ i của thành viên dữ liệu vectơ của kết quả.
trả về kết quả; //trả về thể hiện đa thức
Ngay đó
Trước khi mệnh đề được thực thi, trình gỡ lỗi sẽ hiển thị
Tất cả các thành viên dữ liệu của đối tượng đều có giá trị được đặt chính xác như thuật toán sẽ đặt chúng, bao gồm
Các thành viên dữ liệu Vì vậy, trong
trước khi trở về,
được xây dựng chính xác 100%, vì vậy tính logic của phương pháp này có vẻ ổn cho đến nay.
Sau khi câu lệnh được thực thi, mọi thứ đều thất bại. Vì lý do nào đó, đối tượng được trả về có
Thành viên dữ liệu đã thay đổi thành trống
(Thật kỳ lạ, tất cả các thành viên dữ liệu khác không phải là đối tượng, chẳng hạn như
BẰNG CẤP
, giữ nguyên). Tôi không chắc liệu đó có phải là cùng một đối tượng vectơ bị làm trống bằng cách nào đó hay đó là một bản sao không thành công của đối tượng đa thức chứa đối tượng vectơ này.
Có ai biết tại sao điều này xảy ra và làm thế nào để tránh nó?
Tôi nên đề cập rằng tôi cũng đã thử sử dụng
Được tạo theo phương pháp này
sự vật. Tôi cũng đã thử bằng cách loại bỏ
để không trả lại một tài liệu tham khảo, vì vậy một cái gì đó như
Đa thức Đa thức::operator/(const double &rhs) const
tiêu đề. Nhưng cả hai đều đúng
Các thành viên dữ liệu có tác động xấu tương tự.
Nhờ những người đã đề cập rằng tôi không nên trả lại tài liệu tham khảo, tôi dường như đã tìm ra được vấn đề. Vấn đề nằm ở sự cần thiết phải quá tải hàm tạo bản sao và quá tải toán tử gán để thực hiện sao chép thủ công các thành viên dữ liệu vectơ (không chắc cả hai có cần thiết hay không, tôi chỉ thực hiện cả ba điều và bây giờ nó hoạt động hoàn hảo. Cảm ơn mọi người vì). sự giúp đỡ Giải quyết vấn đề này.
Vâng, bạn trả về một tham chiếu đến một biến cục bộ. Bất kỳ mã nào sử dụng biến này sẽ có hành vi không xác định. Có một giải pháp đơn giản cho trường hợp của bạn: xóa
// Lưu ý rằng hàm không trả về tham chiếu nữa
kết quả trả về//trả về đa thức
Bạn có thể nghĩ rằng nó sẽ làm chậm mã của bạn vì nó sao chép các biến
. Điều này là sai. Mã của bạn sẽ sử dụng bản sao bỏ phiếu. Điều này có nghĩa là không có sự sao chép từ câu lệnh return.
Ngay cả khi trình biên dịch của bạn không hoạt động và không sử dụng phép sao chép bản sao, nó sẽ sử dụng hàm tạo di chuyển của lớp của bạn và nó vẫn sẽ nhanh hơn nhiều so với việc sao chép.
Để đọc thêm về sao chép bầu cử, hãy xem trang tài liệu tại đây:
Loại bỏ bản sao
Giới thiệu về C++: Làm cách nào để tránh vectơ bị phá hủy sau khi trả về từ một phương thức? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/39859880/
c++ - Chọn triển khai toán tử theo khuôn mẫu
C++ Làm cách nào để tạo một cửa sổ đơn giản mà không cần API Win32?
Làm cách nào để triển khai các đặc điểm loại chấp nhận một loại và tính toán tham chiếu nếu kích thước của nó lớn hơn X?
c++ - Chọn triển khai toán tử theo khuôn mẫu - 6ren
c++ - Chọn triển khai toán tử theo khuôn mẫu - Giả sử chúng ta có toán tử/(const-6ren) trên một lớp tùy chỉnh: struct my_class { uint64_t value } template constexpr T operator/(const-6ren;
Giả sử chúng ta có một
cấu trúc my_class {
giá trị uint64_t;
toán tử constexpr T/(const my_class& a, const my_class& b)
trả về static_cast(a.value) / static_cast(b.value);
Cách chọn
a/b
lớp học của tôi
type) trả về chẳng hạn,
Bạn có thể sử dụng một số toán tử chuyển đổi và ma thuật mẫu. Bạn có thể bắt đầu bằng cách xác định một trình bao bọc đơn giản cho biểu thức:
cấu trúc DivideMyClass {
DivideMyClass(const MyClass& lhs_, const MyClass& rhs_) : lhs{lhs_}, rhs_{rhs} {}
toán tử T () const {
trả về static_cast(lhs.value) / static_cast(rhs.value);
const MyClass& lhs;
const MyClass& rhs;
Sau đó, toán tử có thể được nạp chồng như thế này:
constexpr Toán tử DivideMyClass/(const my_class& a, const my_class& b)
trả về DivideMyClass{a, b};
Sau đó, mã của bạn sẽ trông như thế này:
double d = MyClass{21} / MyClass{5} // sẽ bằng 4,2
Tại sao giải pháp này lại tệ
Ngôn ngữ không quá tải việc phân chia theo kiểu trả về. Mã của bạn sẽ khiến người khác nhầm lẫn vì nghĩ rằng có lỗi. Nếu bạn sử dụng rộng rãi phương pháp này, bạn sẽ có được mã gần như không thể đọc được.
Một điều nữa, việc chuyển đổi được thực hiện ngầm, không có gì để nói liệu việc chuyển đổi có thực sự được thực hiện trong toán tử tại trang cuộc gọi hay không.
Bạn sẽ chặn AAA idom (hầu như luôn sử dụng tự động).
Có thể phá vỡ mã của bạn, đó là một điều xấu.
Những kỹ thuật như thế này nên được sử dụng cho các biểu thức mẫu và những thứ tương tự. Việc sử dụng nó để chia đơn giản sẽ khiến người khác nhầm lẫn.
Về c++ - chọn cách triển khai toán tử theo khuôn mẫu, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/39856757/
Cách nói ngắn gọn bằng một tập giá trị trong C++
c++ - Ý nghĩa của toán tử "+ +" (không phải ++) - 6ren
" toán tử trong C++? (29 -6ren">
Một số toán tử một ngôi trong C và C++
Dấu cộng (+) đơn nhất đối với chuỗi ký tự
Tại sao mã này thậm chí còn biên dịch? Toán tử "++" có nghĩa là gì?
std::string c = "abc";
c = c + + "d";
c = c ++ + "d";
c = c + + + + "d";
c = c + + + + + "d";
printf("%s\n", c.c_str());
Mục tiêu được đặt thành std::function bị mất
Cách nói ngắn gọn bằng một tập giá trị trong C++ - 6ren
Cách nói ngắn gọn bằng một tập hợp các giá trị trong C++ - ví dụ tôi có chuỗi sau, if (str[i] == '(' || str[i] == ')' || str[i ] = = '+' || str[i] == '-' ||
Ví dụ: tôi có chuỗi sau,
nếu (str[i] == '(' ||
str[i] == ')' ||
str[i] == '+' ||
str[i] == '-' ||
str[i] == '/' ||
str[i] == '*')
Câu hỏi của tôi là, có cách nào ngắn gọn để nói liệu giá trị này có phải là một trong những tập giá trị này trong C++ không?
Bạn có thể tìm kiếm một ký tự trong chuỗi bằng các ký tự đặc biệt của mình
str[i]
std::string("()+-/*").find(str[i]) != std::string::npos
Về c++ - một cách nói ngắn gọn bằng một tập hợp các giá trị trong C++, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/39569126/
c++ - hàm const nhưng tôi có thể "sửa đổi" lớp
Hướng dẫn bố cục lưới CSS ngắn gọn
Bố cục lưới là một mẫu bố cục bao gồm một loạt các đường ngang và dọc. Sử dụng lưới, chúng ta có thể sắp xếp các thành phần thiết kế, giúp chúng ta thiết kế một loạt các trang với các thành phần vị trí và chiều rộng cố định, giúp trang web của chúng ta thống nhất hơn. Một lưới thường có nhiều
c++ - Hướng dẫn WordNet ngắn gọn và chính xác?
đóng cửa. Câu hỏi này không tuân thủ các nguyên tắc của Stack Overflow. Hiện tại nó không chấp nhận câu trả lời. Chúng tôi không cho phép các câu hỏi tìm kiếm đề xuất về sách, công cụ, thư viện phần mềm, v.v. Bạn có thể chỉnh sửa câu hỏi của mình để trả lời bằng sự kiện và trích dẫn. Đóng cửa 8 năm trước
python - Tra cứu từ điển hàng loạt Python 3.x ngắn gọn
Tôi có một số lượng lớn chuỗi mà tôi muốn chuyển đổi thành số nguyên. Cách rõ ràng nhất để thực hiện tra cứu từ điển danh sách trong Python 3.7 là gì? Ví dụ: d = {'frog':1, 'dog':2, 'mouse':3} x = ['frog', '
c++ - Mục tiêu được đặt thành std::thiếu chức năng - 6ren
c++ - Thiếu mục tiêu được đặt cho std::function - Mục tiêu tôi đặt cho std::function bị thiếu, tôi không biết tại sao tôi có thể bỏ qua một số lỗi nhỏ trong chương trình này. Bất cứ ai có thể giúp đỡ. class Test đăng ký lambda vào lớp singleton, nhưng khi cố gắng gọi lại, st-6ren
Mục tiêu tôi đặt cho std::function bị thiếu và tôi không biết tại sao mình lại có thể bỏ qua một số lỗi nhỏ trong chương trình này. Bất cứ ai có thể giúp đỡ.
class Test đăng ký lambda vào lớp singleton, nhưng khi cố gắng gọi lại, mục tiêu được đặt trong std::function bị mất.
lớp gọi lại_store cuối cùng
sử dụng callback_func_type = std::function;
phiên bản callback_store tĩnh()
ví dụ callback_store tĩnh;
void register_callback(callback_func_type func)
std::cout << "register_callback() <<<" << std::endl;
m_func = func;
// Tôi có thể gọi mục tiêu từ đây.
std::cout << "register_callback() func() " << std::endl;
std::cout << "register_callback() m_func() " << std::endl;
m_func();
// một số số liệu thống kê
std::cout << "register_callback() :: " << func.target_type().name() << std::endl;
void gọi_callback()
std::cout << "invoke_callback() <<< " << std::endl;
nếu (!m_func)
// Khối này bị trúng!
std::cout << "invoke_callback() :: m_func trống" << std::endl;
trả về m_func();
gọi lại_func_type m_func;
Kiểm tra cuối kỳ của lớp
Bài kiểm tra()
callback_store::instance().register_callback([this](){do_test();});
~Kiểm tra()
std::cout << "hàm hủy" << std::endl;
khoảng trống do_test()
std::cout << "do_test() đã gọi !!" << std::endl;
Kiểm tra t;
callback_store::instance().invoke_callback();
sh-4.3$ g++ -std=c++11 -o main *.cpp
sh-4,3$ chính
Xin chào thế giới
register_callback() <<<
register_callback() func()
do_test() đã gọi!!
register_callback() m_func()
register_callback() :: ZN4TestC4EvEUlvE_
gọi_callback() <<<
gọi_callback() :: m_func trống
kẻ hủy diệt
Tôi nghĩ vấn đề là ở cách bạn triển khai lớp singleton của mình.
Những gì bạn đang trả lại là một bản sao của đối tượng tĩnh, bạn nên sử dụng
callback_store& instance() tĩnh
Đầu ra mã của bạn sẽ là (đã được kiểm tra):
Về C++ - mục tiêu được đặt thành std::function bị thiếu, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/39549680/
c++ - con trỏ: p++ & p+1
android — Giải thích int 4 byte thành 4 byte float-6ren
c++ - Diễn giải int 4 byte thành float 4 byte - xem chương trình đơn giản này: #include sử dụng không gian tên std; int main() { unsigned int i=0x3f800000; p=(float*)(-6ren
Thời gian cập nhật: 2023-11-03 08:21:44
Hãy xem chương trình đơn giản này:
int không dấu i=0x3f800000;
float* p=(float*)(&i);
nổi f=*p;
cout< MAX
Nhưng chúng tôi thực sự không thể kiểm tra vì
tôi*j
sẽ gây tràn và kết quả không chính xác (và sẽ luôn nhỏ hơn hoặc bằng
). Vì vậy, chúng tôi sửa đổi nó như thế này:
i>MAX/j
Nhưng điều đó không hoàn toàn đúng vì trong phép chia có liên quan đến việc làm tròn. Thay vào đó, chúng tôi muốn biết kết quả như thế này:
i > tầng(MAX / j) + float(MAX % j) / j
Vì vậy, chúng ta có phép chia, được làm tròn ngầm bằng số học số nguyên (
Không, chỉ để minh họa thôi), chúng ta thiếu phần còn lại của phép chia trong bất đẳng thức trước đó (có giá trị nhỏ hơn 1).
là hai số đạt đến giới hạn. Nếu một trong hai số đó cộng thêm 1 thì sẽ xảy ra tràn. Giả sử không có giá trị nào bằng 0 (trong trường hợp đó tình trạng tràn sẽ không xảy ra),
(tôi + 1) * j
tôi * (j + 1)
nhiều hơn
1 + (i*j)
. Vì vậy, chúng ta có thể yên tâm bỏ qua các lỗi làm tròn phép chia nhỏ hơn 1.
Ngoài ra, chúng ta có thể cơ cấu lại như thế này:
i - tầng(MAX / j) > float(MAX % j) / j
Về cơ bản, điều này cho chúng ta biết
i - tầng(MAX/j)
phải lớn hơn
[0, 1)
Các số trong khoảng. có thể được viết chính xác như sau:
i - tầng(MAX / j) >= 1
Ngay sau khoảng thời gian. Chúng ta có thể viết lại nó như sau:
i - tầng(MAX/j) > 0
Hoặc như:
i > tầng(MAX / j)
Như vậy chúng ta đã chứng minh được sự tương đương của phép thử đơn giản và phiên bản dấu phẩy động. Điều này là do phép chia không gây ra lỗi làm tròn đáng kể. Bây giờ chúng ta có thể sử dụng một bài kiểm tra đơn giản để sống hạnh phúc mãi mãi.
std::function làm tham số phương thức
c++ - Cách tổ chức các chương trình c++ trong bộ nhớ - ngăn xếp và đống
C++ std::enable_if trong mẫu lớp cho hàm thành viên
c++ - std::function làm tham số phương thức - 6ren
c++ - std::function làm tham số phương thức - Tôi chưa quen với functor và tôi phải tạo một phương thức cho API sử dụng hàm làm tham số. Vì vậy, trong tiêu đề của tôi, tôi đã thực hiện: typedef void(*target_function)(std::string clien-6ren
Tôi mới làm quen với functor và tôi phải tạo một phương thức cho API lấy hàm làm tham số. Vì vậy, trong tiêu đề của tôi, tôi đã thực hiện:
typedef void(*target_function)(std::string client_ip);
void my_method(std::string path_name, std::function a_function);
Trong cpp của tôi, tôi đã thử theo cách này:
void my_class:: my_method(std::string path_name, std::function )
Nhưng nó sẽ không được biên dịch.
Tôi đang bối rối về điều này...bạn có thể giúp tôi giải quyết vấn đề này không?
EDIT: Đã làm được! Cảm ơn mọi người vì câu trả lời nhanh chóng!
@ Cheers-and-hth-alf nói đúng. Nhưng tôi thích điều này hơn:
typedef std::function TTargetFunc;
void my_method(std::string path_name, TTargetFunc a_function);
Về c++ - std::function làm tham số phương thức, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/22930993/
Làm cách nào để chỉ cho phép khởi tạo lớp mẫu nếu loại T có nguồn gốc từ loại X?
c++ -//Memmove có sử dụng bộ đệm trung gian không? -6ren
c++ -//Memmove có sử dụng bộ đệm trung gian không? -Điều này chỉ vì tò mò hơn là bất cứ điều gì quan trọng, nhưng tôi chỉ thắc mắc về đoạn tài liệu sau đây từ memmove: Quá trình sao chép diễn ra như thể bộ đệm trung gian là us-6ren
Đây là vì tò mò hơn bất kỳ câu hỏi quan trọng nào, nhưng tôi chỉ muốn biết
ghi nhớ
Đoạn mã sau từ tài liệu:
Việc sao chép diễn ra
như thể
một bộ đệm trung gian đã được sử dụng
(nhấn mạnh của tôi). Công thức này gợi ý cho tôi rằng việc sử dụng bộ đệm trung gian hay không là tùy thuộc vào việc triển khai trình biên dịch cụ thể.
nếu bạn muốn tôi viết
, tôi có thể tự động hóa những việc sau:
được phân bổ trên đống
byte
Nguồn của tập tin tạm thời
nhiệt độ đến đích
Giải phóng bộ đệm
Tôi ước gì có ai đó có thể...
...xác nhận xem công thức có phải chỉ vì nó dễ dàng hơn cho người dùng hình dung những gì đang diễn ra mà không thực sự sửa chữa việc triển khai cụ thể hay không
Sử dụng bộ đệm trung gian;
...làm rõ một số trình biên dịch C++ phổ biến (chẳng hạn như
hoặc Visual C++)
Thực hiện - ví dụ:
Nó sử dụng một bộ đệm và kiểm tra sự chồng chéo để có thể trực tiếp
...có thể chỉ ra những lỗi/sự kém hiệu quả rõ ràng trong thuật toán đơn giản của tôi ở trên.
Thực vậy. "Như thể" có nghĩa là nó phải hoạt động như vậy nhưng không hạn chế việc triển khai thực sự làm như vậy. Hành vi bắt buộc duy nhất là bộ đệm đích kết thúc với các byte chính xác trong bộ đệm nguồn, bất kể bộ đệm có trùng nhau hay không.
Một cách thực hiện phổ biến là sao chép các byte về phía trước từ đầu bộ đệm nếu đích đến bắt đầu trước nguồn và ngược lại từ cuối bộ đệm. Nếu tồn tại sự chồng chéo, điều này đảm bảo rằng các byte nguồn luôn được đọc trước khi bị ghi đè.
Không có lỗi trừ khi phân bổ thất bại. Sự kém hiệu quả là việc phân bổ và giải phóng các bộ đệm tạm thời cũng như sao chép từng byte hai lần thay vì một lần.
Về C++ -/memmove có sử dụng bộ đệm trung gian không? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/22914923/
Cấu trúc dữ liệu để lưu trữ dữ liệu hai chiều rất lớn trong C++
Làm cách nào để chỉ cho phép khởi tạo lớp mẫu nếu loại T có nguồn gốc từ loại X? -6ren
Làm cách nào để chỉ cho phép khởi tạo lớp mẫu nếu loại T có nguồn gốc từ loại X? -template class Test { }; class A : public X; class B; // OK Test b; // KHÔNG OK Tôi muốn thực hiện điều gì đó như thế này. có lẽ-6ren
Thời gian cập nhật: 2023-11-03 08:22:06
hạng A : công khai X;
hạng B;
Kiểm tra a; // OK
Kiểm tra b; // KHÔNG ĐƯỢC
Tôi muốn hoàn thành một cái gì đó như thế này.
Có lẽ điều này có thể được thực hiện dễ dàng hơn. Về cơ bản, lý do tôi cần nó là: lớp mẫu T có thể khóa thành viên std::mutex m_mutex trong một đối tượng thuộc loại T, nếu nó tồn tại.
Sử dụng các xác nhận tĩnh và thích hợp
lớp đặc điểm kiểu
static_assert( std::is_base_of::value, "T không xuất phát từ X!");
Làm cách nào để chỉ cho phép khởi tạo lớp mẫu nếu loại T có nguồn gốc từ loại X? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/22893714/
Nơi xác định hằng số mã lỗi trong C++
Cấu trúc dữ liệu để lưu trữ dữ liệu hai chiều rất lớn trong C++ - 6ren
Cấu trúc dữ liệu để lưu trữ dữ liệu 2D rất lớn trong C++ - Tôi cần xử lý bảng dữ liệu (2D) với tối đa 100 triệu hàng và 30 cột. Các phần tử của bảng chỉ chứa 0, 1 và dấu gạch ngang (-). Bảng được cung cấp cho tôi dưới dạng tệp văn bản. Tôi phải lưu trữ dữ liệu này vào một số cấu trúc dữ liệu và thực hiện những việc như sắp xếp bảng, xóa hàng, so sánh các phần tử (-6ren
Tôi cần xử lý bảng dữ liệu (2D) với tối đa 100 triệu hàng và 30 cột. Các phần tử của bảng chỉ chứa 0, 1 và dấu gạch ngang (-). Bảng được cung cấp cho tôi dưới dạng tệp văn bản. Tôi phải lưu trữ dữ liệu này vào một số loại cấu trúc dữ liệu và thực hiện các thao tác như sắp xếp bảng, xóa hàng, so sánh các phần tử (trong các hàng và cột khác nhau), v.v.
Hiện tại tôi đang sử dụng vectơ 2D cho việc này. Tôi đã thử sử dụng vectơ số nguyên và vectơ bit. Cả hai đều hoạt động với 10 triệu hàng và 25 cột, nhưng không hoạt động với giới hạn tối đa ở trên (tôi đã phân bổ sai).
Tôi cho rằng điều này là do vectơ yêu cầu bộ nhớ liền kề. Cấu trúc dữ liệu chính xác là gì? Thời gian cũng là một điều tôi cân nhắc và tôi cũng muốn chuyến thăm này thật ngắn gọn. Ngoài ra, nếu vectơ thực sự là cấu trúc dữ liệu chính xác, thì có cách triển khai nào tốt hơn có thể được sử dụng để thực hiện công việc không? Tôi phải sử dụng C++ và không thể sử dụng cơ sở dữ liệu và những thứ khác.
Nstate
Nó là một thư viện cho các mảng cơ số tùy ý được đóng gói (vì vậy tristate đủ điều kiện).
http://nstate.hotilefork.com
Tuyên bố miễn trừ trách nhiệm: Tôi đã viết nstate.
Về c++ - Cấu trúc dữ liệu để lưu trữ dữ liệu 2D rất lớn trong C++, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/22851147/
c++ - Hành vi hàm trong C++
python - Cách chuyển đổi mã nguồn python sang mã nguồn C++ - 6ren
python - Làm cách nào để chuyển đổi mã nguồn python sang mã nguồn C++ - Câu hỏi này đã có câu trả lời ở đây: Chuyển đổi chương trình Python sang mã C/C++? [đã đóng] (8 câu trả lời) Đã đóng 3 năm trước. Tôi đang cố gắng tìm cách chuyển đổi văn bản nguồn .py-6ren
Thời gian cập nhật: 2023-11-03 08:22:41
Chuyển đổi chương trình Python sang mã C/C++?
Tôi đang cố gắng tìm cách chuyển đổi tệp nguồn .py thành tệp nguồn .cpp (để tiết kiệm thời gian khi thực hiện thủ công). Tôi chưa bao giờ sử dụng python trước đây và hy vọng có một cách nhanh chóng để chuyển đổi nó và dọn sạch mọi mã mà trình chuyển đổi có thể không chạy đúng cách.
Cho đến nay, một số
Những gì tôi tìm thấy khi tìm kiếm trên Google dường như là: nuitka, cython và pypy/rpython.
Tuy nhiên, tài liệu tôi đọc dường như chỉ tạo ra tệp thực thi chứ không phải mã nguồn thực tế.
Tại thời điểm này tôi đã tìm thấy py2c nhưng dường như không tìm thấy bất kỳ tài liệu nào về cách sử dụng nó. Ngoài ra, từ lộ trình được đăng trên wiki, nó dường như chưa phải là một sản phẩm hoàn chỉnh, vì vậy tôi nghi ngờ về độ tin cậy của nó.
Sẽ rất cảm kích nếu bạn có thể cung cấp thêm nguồn về cách đạt được điều này hoặc làm sáng tỏ điều gì đó mà tôi có thể đã bỏ sót trong các khả năng trên. Nếu không, tôi chỉ cần chuyển đổi nó theo cách thủ công.
c++ - Công dụng của mã "Phát hiện byte 0 bên trong số nguyên 32 bit" là gì?
Tham chiếu C++ tới đối tượng đã bị xóa
c++ - hành vi lạ của hàm so sánh sắp xếp
c++ - con trỏ không khớp và vấn đề
Làm cách nào để #define chuỗi mã hóa cứng khi sử dụng tiền tố L (trình biên dịch Visual C++)? -6ren
Làm cách nào để #define chuỗi mã hóa cứng khi sử dụng tiền tố L (trình biên dịch Visual C++)? -Cách #xác định đường dẫn L
Làm cách nào để #define chuỗi mã hóa cứng khi sử dụng tiền tố L (trình biên dịch Visual C++)?
Thời gian cập nhật: 2023-11-03 08:23:14
Cách #define đường dẫn L"C:\Windows\System32\taskmgr.exe" để xử lý ký tự rộng
#define TASK_MGR "C:\\Windows\\System32\\taskmgr.exe"
KillProcess(TASK_MGR); //điều này hoạt động
HINSTANCE hồi sinh = ShellExecute(NULL, L"open", L"C:\\Windows\\System32\\taskmgr.exe", NULL, NULL, SW_MINIMIZE);
Bạn cần sử dụng nhiều macro. May mắn thay, tiêu đề Windows đã xác định macro như vậy, có thể mở rộng chuỗi ký tự nếu cần thiết
CHỮ()
, vì vậy không có lý do chính đáng để tự viết nó.
Mã dưới đây hoạt động tốt:
KillProcess(TASK_MGR); // Không chắc KillProcess là gì hoặc tại sao nó lại bị thu hẹp
// chuỗi, bất kể Unicode có được xác định hay không...
// Hàm Win32 có tên là TerminateProcess.
HINSTANCE hồi sinh = ShellExecute(NULL, L"open", TEXT(TASK_MGR), NULL, NULL,
SW_MINIMIZE);
... à, ngoại trừ việc bạn đã mã hóa cứng đường dẫn đến trình quản lý tác vụ và nó sẽ không được tìm thấy ở vị trí đó trên tất cả các máy (như của tôi). Nhưng tôi tin rằng đây chỉ là mục đích ví dụ và bạn đã biết đủ để không mã hóa đường dẫn.
Làm cách nào để #define chuỗi mã hóa cứng khi sử dụng tiền tố L (trình biên dịch Visual C++)? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/9697096/
C++ | Lỗi chức năng chính |
c++ - Lỗi trình biên dịch: 'dự kiến id không đủ tiêu chuẩn trước khi "sử dụng '''
Biên dịch C++ - GSL trên x86_64
Gọi mã C# từ C++ không được quản lý?
c++ - Một câu hỏi mang tính mô phạm: cái nào hiệu quả hơn -6ren?
Một câu hỏi mang tính mô phạm: cái nào hiệu quả hơn? - Cái nào hiệu quả hơn? Hay tất cả chúng đều có giá trị như nhau? Điều gì đang xảy ra với kiến trúc cơ bản trong các dòng có dấu hoa thị? (1) for(int i = m_size; i > index; --i) { int k = normalize(-6ren
Thời gian cập nhật: 2023-11-03 08:24:41
Cái nào hiệu quả hơn? Hay tất cả chúng đều có giá trị như nhau? Điều gì đang xảy ra với kiến trúc cơ bản trong các dòng có dấu hoa thị?
for(int i = m_size; i > chỉ mục; --i)
int k = chuẩn hóa(i);
m_data[k] = m_data[k - 1];
int k = 0;
k = chuẩn hóa(i);
Đoạn mã số 1 hiệu quả hơn với trình biên dịch gốc vì đoạn mã thứ hai yêu cầu tải 0 trong biến k.
Một trình biên dịch tốt sẽ nhận ra rằng k không được sử dụng trước khi tải nó vào vòng lặp for và tối ưu hóa phép gán bổ sung.
Bạn có thể sử dụng đoạn 2 mà không cần tải đoạn 0:
Về c++ - câu hỏi hơi mang tính mô phạm: cái nào hiệu quả hơn?, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/55739764/
Tham chiếu giá trị được trả về từ một hàm có thực sự là giá trị giá trị (theo quan điểm của người gọi) không?
c++ - Thay đổi tham chiếu biến ngoài phạm vi
c++ - Tại sao tôi nhận được kết quả trống?
Vấn đề đẩy Git - mang tính mô phạm
Có một nhánh chính và một nhánh tính năng tìm kiếm trong dự án của tôi. Tôi đã đẩy nhánh tính năng tìm kiếm vào kho lưu trữ từ xa và cho đến nay mọi thứ vẫn hoạt động tốt. Sáng nay khi tôi đang làm việc trên nhánh đó, tôi đã thực hiện "git pu.
Cách loại bỏ cảnh báo mô phạm GCC (-Wpedantic) về __FUNCTION__
Khi tôi nhập một hàm bằng macro được xác định trước "__FUNCTION__" (trong gcc và clang), tôi đang in (printf) tên của hàm. Tuy nhiên, nếu tôi sử dụng -Wpedantic tôi nhận được cảnh báo này: cảnh báo
Tham chiếu giá trị được trả về từ một hàm có thực sự là giá trị giá trị (theo quan điểm của người gọi) không? -6ren
Tham chiếu giá trị được trả về từ một hàm có thực sự là giá trị giá trị (theo quan điểm của người gọi) không? -Làm cách nào để tạo một tham chiếu lvalue tham chiếu đến một tham chiếu lvalue được trả về từ một hàm? Từ quan điểm của người gọi, không phải tham chiếu giá trị được trả về từ hàm này thực sự là giá trị phải không? Ví dụ: lớp Obj {}; Obj& refToRef(Obj& o) { retu-6ren
Làm cách nào để tạo tham chiếu lvalue tham chiếu đến tham chiếu lvalue được trả về từ hàm? Từ quan điểm của người gọi, không phải tham chiếu giá trị được trả về từ hàm này thực sự là giá trị phải không? Ví dụ:
lớp Obj {};
Obj& refToRef(Obj& o) {
trả lại o;
Mục tiêu;
Obj& o2 = refToRef(o);
(tham chiếu giá trị) Làm cách nào tôi có thể tham chiếu thứ gì đó trông giống như giá trị?
Không phải tham chiếu giá trị được trả về từ hàm đó thực sự là giá trị theo quan điểm của người gọi sao?
Không, vì kết quả của lệnh gọi hàm
là một giá trị.
[expr.call]/14
(nhấn mạnh của tôi):
Cuộc gọi hàm là một giá trị nếu loại kết quả là loại tham chiếu giá trị
hoặc tham chiếu giá trị cho loại hàm, giá trị xvalue nếu loại kết quả là tham chiếu giá trị cho loại đối tượng và ngược lại là giá trị giá trị.
Tôi khá chắc chắn rằng quy tắc này tồn tại cụ thể để tránh vấn đề mà câu hỏi của bạn đang đặt ra.
Về c++ - Tham chiếu lvalue được trả về từ một hàm có thực sự là một giá trị (từ góc nhìn của người gọi) không? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/55692113/
Cách di chuyển một đối tượng sang nullptr trong C++
Tại sao các thành viên tĩnh của công đoàn không được lưu trữ dưới dạng công đoàn? -6ren
Tại sao các thành viên tĩnh của công đoàn không được lưu trữ dưới dạng công đoàn? -Trong C++, một liên minh có thể chứa các thành viên tĩnh, trong trường hợp là một lớp, thuộc về một lớp và do đó chung cho tất cả các đối tượng. hợp U { dài l; tĩnh dài -6ren
Có thể chứa các thành viên tĩnh, trong trường hợp các lớp, các thành viên này thuộc về một lớp và do đó chung cho tất cả các đối tượng.
liên minh U
sl dài tĩnh;
intsi tĩnh;
int U::si;
dài U::sl;
Điều hợp lý là tất cả các thành viên tĩnh của liên minh được lưu trữ tại cùng một địa chỉ tương tự như các thành viên không tĩnh. Nhưng đó không phải là trường hợp. Một ví dụ đơn giản cho thấy các thành viên tĩnh được lưu trữ ở các địa chỉ khác nhau và có thể chứa
Bạn bạn;
u.si = 10;
u.sl = 50;
std::cout << "Địa chỉ của các thành viên không tĩnh: " << &u.i << " " << &u.l << std::endl;
std::cout << "Địa chỉ của các thành viên tĩnh: " << &u.si << " " << &u.sl << std::endl;
std::cout << "Giá trị thành viên tĩnh: " << u.si << " " << u.sl << std::endl;
Địa chỉ thành viên không tĩnh: 006FF8EC 006FF8EC
Địa chỉ thành viên tĩnh: 00AEB144 00AEB140
Giá trị thành viên tĩnh: 10 50
Tôi không hiểu tại sao việc lưu trữ giá trị độc lập lại được kết hợp. Tôi nghĩ rằng điều này là sai lệch và không có ý nghĩa. Tuy nhiên, theo tôi, việc này có lý do.
Mục đích của thành viên tĩnh là gì?
Bạn có thể nhìn điều này từ hai góc độ.
Phối cảnh C++:
Đoàn thể trước hết là một giai cấp. Mục đích của nó khác với lớp học, nhưng nó được thông báo bởi lớp học đó là gì.
Union là một lớp và chỉ có một đối tượng con thuộc bất kỳ loại nào là sự kiện. Để làm điều này, nó thay đổi cách hoạt động của các đối tượng thành viên của liên minh. Đây cũng là một liên minh và không thể được phép.
lớp cơ sở
Một phần lý do cho các đối tượng trẻ em.
Các thành viên dữ liệu tĩnh không phải là các đối tượng con thành viên, do đó cấu hình của chúng trong một liên kết sẽ không khác với cấu hình của chúng trong các lớp không liên kết.
Hơn nữa, các thành viên tĩnh của các kiểu trong C++ thực sự chỉ là một cơ chế xác định phạm vi cho tên hàm và đối tượng. Chúng thực sự vẫn mang tính toàn cầu, nhưng chúng có thể ở chế độ riêng tư và ẩn, đồng thời chúng phải được thêm tiền tố bằng tên loại của chúng để bạn có thể sử dụng chúng.
Hành vi của các thành viên dữ liệu tĩnh của một hợp không khác với hành vi của các thành viên dữ liệu tĩnh của một lớp.
Ý tưởng rằng C++ phải tương thích với C:
Sự kết hợp tồn tại trong C nên C++ cũng phải có sự kết hợp. Nhưng các hợp nhất rất khó xác định trong mô hình đối tượng C++, khó sử dụng và có nhiều vấn đề khác. Do đó, bạn có thể coi hợp nhất là thứ mà C++ cần nhưng không muốn xử lý. Vậy bạn sẽ làm gì với chúng?
Khi giải quyết cách thức hoạt động của các công đoàn C, bạn có thể làm cho các công đoàn hoạt động giống như C. Không có thứ gọi là thành viên tĩnh trong C, vì vậy không có mã C nào mong muốn kết hợp các thành viên liên minh tĩnh. Vì vậy... đừng kết hợp chúng. Nếu người dùng thực sự cần một thành viên tĩnh là phần thân hợp nhất của một số tập hợp loại, họ có thể dễ dàng tạo phần thân hợp nhất và tạo một thành viên tĩnh duy nhất của loại đó.
Vì vậy, người dùng không mất đi bất kỳ tính biểu cảm nào bằng cách làm cho các thành viên tĩnh trở nên khác biệt.
Giới thiệu về c++ - Tại sao các thành viên tĩnh của liên kết không được lưu trữ dưới dạng liên kết? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/55540587/
Chuyển đổi con trỏ thành con trỏ const và quay lại kiểu nguyên thủy không xác định?
C++ Cách di chuyển một đối tượng sang nullptr-6ren
C++ Cách di chuyển một đối tượng sang nullptr - Tôi đang nghĩ đến một trường hợp sử dụng kỳ lạ khi tôi muốn di chuyển một đối tượng sang nullptr. Có lẽ tôi nên đưa ra một đoạn mã: class Objpair { public: Objpair(Obj&& a, O-6ren
Tôi đang nghĩ đến một trường hợp sử dụng kỳ lạ khi tôi muốn di chuyển một đối tượng sang nullptr. Có lẽ tôi nên đưa ra một đoạn mã:
cặp đối tượng lớp {
Objpair(Obj&& a, Obj&&b): thứ nhất(&a), thứ hai(&b) { }
Obj* đầu tiên;
Obj* giây;
Vấn đề là khi a và b vượt quá phạm vi, con trỏ thứ nhất và thứ hai sẽ bị treo lơ lửng. Nếu tôi có thể di chuyển đối tượng a lên con trỏ đầu tiên, sẽ không có vấn đề về phạm vi và phạm vi kép. Nếu thành viên đầu tiên được khai báo là Obj chứ không phải là con trỏ Obj*, thì trực tiếp first(std::move(a)) sẽ thực hiện công việc. Tôi phải làm điều gì đó sai ở đây. Tôi đang cân nhắc việc di chuyển thay vì sao chép vì tôi đang cố gắng chuyển quyền điều khiển từ đối tượng khác sang đối tượng hiện tại và cải thiện hiệu suất.
Việc sử dụng phiên bản con trỏ là do tôi đang xem xét hành vi đa hình của các đối tượng thành viên.
Những gì bạn có thể làm là từ các thông số của bạn
di chuyển cấu trúc
Đối tượng như hình dưới đây:
Đối tượng(Obj&& a, Obj&& b)
: đầu tiên(mới Obj(std::move(a)))
, giây(new Obj(std::move(b)))
Tôi khuyên bạn nên sử dụng
: đầu tiên(std::make_unique(std::move(a)))
, giây(std::make_unique(std::move(b)))
std::unique_ptr trước;
std::unique_ptr giây;
Về cách di chuyển một đối tượng sang nullptr trong C++, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/55484089/
Sửa đổi QString chứa "\"
Chuyển đổi con trỏ thành con trỏ const và quay lại kiểu nguyên thủy không xác định? -6ren
Chuyển đổi con trỏ thành con trỏ const và quay lại kiểu nguyên thủy không xác định? -Tôi biết rằng việc truyền một con trỏ const sang một loại không phải là const có thể là hành vi không xác định, nhưng nếu bắt đầu con trỏ không phải là const thì sao? int i = 0; int * pi = &i; const int * con-6ren
Thời gian cập nhật: 2023-11-03 08:24:42
Tôi biết rằng việc truyền một con trỏ const sang loại không phải là const có thể là hành vi không xác định, nhưng nếu ban đầu con trỏ không phải là const thì sao?
int * pi = &i;
const int * const_pi = const_cast(pi);
int * non_const_pi = const_cast(const_pi);
*non_const_pi = 0;
*non_const_pi = 1;
int j = *non_const_pi;
Có hành vi không xác định nào không? Nếu vậy, chúng xảy ra ở đâu? Trình biên dịch có thể giả sử
non_const_pi
Nó có được chuyển đổi từ con trỏ hằng và không thực hiện sửa đổi nào không?
Tôi biết việc truyền con trỏ const sang loại không phải const có thể là hành vi không xác định.
Đây là một sự hiểu lầm.
Con trỏ truyền hằng không bao giờ dẫn đến hành vi không xác định. sự hủy bỏ thông qua
thu được không
con trỏ - ý chí
Con trỏ trỏ tới
Đối tượng không phải là hành vi không xác định nếu đối tượng ban đầu được sử dụng ở chế độ chỉ đọc. Đây là hành vi không xác định nếu bạn cố gắng ghi vào đối tượng.
int const i = 10;
int const* p1 = &i;
int* p2 = const_cast(p1); // OK.
std::cout << *p2; // Vẫn ổn.
*p2 = 20; // Không ổn.
Với điều này, đoạn mã thứ hai của bạn hoàn toàn ổn. Không có hành vi không xác định vì đối tượng ban đầu không
Tiêu chuẩn, Phần 5.2.11, Biểu thức/Const
Kết quả của một con trỏ
đề cập đến đối tượng ban đầu.
Chuyển đổi con trỏ thành con trỏ const và quay lại kiểu nguyên thủy không xác định? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/55428187/
c++ - Ai ở đây? g++ hay Visual Studio 2017?
Kết hợp C++ của CStrings lớn - 6ren
Ghép nối các CString lớn trong C++ - Tôi gặp sự cố khi ghép các CString lớn trong một cơ sở mã kế thừa. CString có thể chứa các tệp được mã hóa base64 và do đó có thể lớn. Tại một thời điểm nào đó, các CString này sẽ được nối với nhau như thế này: result += -6ren
Thời gian cập nhật: 2023-11-03 08:24:48
Tôi gặp sự cố khi ghép các CString lớn trong cơ sở mã kế thừa. CString có thể chứa các tệp được mã hóa base64 và do đó có thể lớn. Tại một thời điểm nào đó, các CString này sẽ được nối với nhau như thế này:
result += CString(_T("Một số chuỗi nhỏ hơn")) + Huge_CString + _T("Một số chuỗi nhỏ hơn");
Điều này dẫn đến việc phân bổ nhiều lần và do đó chúng tôi gặp phải tình trạng tăng đột biến bộ nhớ rất lớn. Mặc dù việc này được thực hiện song song trên nhiều luồng cho các tệp khác nhau. Nếu tất cả chúng được kết hợp lại thì tôi sẽ có một "ngoại lệ bộ nhớ".
Cách tốt nhất để xử lý vấn đề này là gì. Nếu tôi có thể giảm số lượng phân bổ thì điều đó sẽ hữu ích. Bây giờ tôi không tìm kiếm một giải pháp hoàn hảo mà là tìm cách giảm bớt đỉnh điểm.
Để chỉnh sửa các chuỗi lớn, bạn có thể muốn sử dụng các loại không liền kề
dây thừng
unencoded_rope
Loại chuỗi chi phí thấp, sao chép khi ghi hoặc chèn vào giữa
Về việc ghép C++ của CStrings khổng lồ, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/51750936/
Trả về nhóm float từ hàm C++
Cách chuyển const_iterator và trình lặp không phải const trong lệnh gọi mẫu đơn
c++ - Ghi đè `istream operator>>` so với sử dụng `sscanf`
Phân bổ bộ nhớ của các thành viên dữ liệu trong lớp bằng toán tử delete[]
Có sự khác biệt nào giữa việc chuyển CString và chuyển CString.GetBuffer sang %s trong CString.Format không
Cho CString buffer = ""; Giá trị chuỗi = "blah"; buffer.Format ("%s %s", value, value.GetBuffer());
Không thể thêm nhiều Cstrings vào một tập hợp Cstrings
Tôi có chức năng này để thêm các sự kiện (mỗi sự kiện là một chuỗi) vào một mảng sự kiện: bool Vendor::addEvent(const char * event) { if (eventsSiz
c++ - Sử dụng các đối tượng CString trong CString::Format
Tôi có thể sử dụng CString trong CString::Format như thế này không: CString text = _T("text");
c++ - Chuỗi chuỗi nhập không thành công: bao gồm
Tôi đang làm việc trong một dự án nhóm sử dụng ROS và C++ trên Ubuntu 16.04. Mọi thứ vẫn hoạt động tốt cho đến hai tuần trước thì đột nhiên tôi nhận được thông báo lỗi này: Trong tệp được bao gồm từ /usr/include/c+
Có bất kỳ lợi thế nào về hiệu suất khi sử dụng const CString& thay vì chỉ sử dụng CString làm tham số hàm không?
Tôi có một hàm lấy CString làm một trong các tham số, tôi đã xem qua cơ sở mã và thấy rằng const CString& được sử dụng làm tham số ở nhiều nơi. Vì vậy, tôi muốn biết sự khác biệt giữa việc sử dụng CString và const CString&
c++ - std::map
chèn cặp mới vào
Tôi có hai danh sách và một cái tên cần tìm. Nếu tên bạn đang tìm kiếm không có trong danh sách đầu tiên, nó có thể nằm trong danh sách thứ hai với định dạng hơi khác. Chức năng chuyển đổi giữa hai định dạng được đưa ra. std::map* đã chuyển đổi Tên BOOL C
ios - Chuỗi NSString và CString :encoding: - không sao chép chuỗi Cstring?
Tôi cần tính chữ ký (một loại hàm băm) cho đối tượng của mình. Việc tính toán yêu cầu nhiều thao tác cho mỗi ký tự, vì vậy để tăng tốc quá trình, mã của tôi hoạt động trên CString và sau đó chuyển đổi CString được tính toán thành NSString cuối cùng. thế hệ sơ khai
c++ - Tại sao việc chuyển đổi CString thành wchar_t* tạo ra một bản sao tạm thời? Nếu chúng ta sử dụng các loại khác thay vì CString thì sao?
PVS Studio đã phát hiện ra một lỗ hổng tiềm ẩn mà tôi đang điều tra; cảnh báo V623 http://www.viva64.com/en/d/0240/ Tuy nhiên, không có đủ lời giải thích để hiểu tại sao một bản sao tạm thời lại được tạo ra. Nếu CString::
Làm cách nào để chuyển đổi chuỗi thành NSString và NSString thành chuỗi?
Giả sử tôi có chuỗi char array[1000] sau đây; Làm cách nào tôi có thể chuyển đổi nó thành NSString và ngược lại. Cảm ơn. Câu trả lời hay nhất Một trích dẫn của nhà phát triển từ Apple có một bài viết hay về vấn đề này. về cơ bản,
Trong C++, nếu tôi chuyển một CString bằng cách tham chiếu đến một hàm và gán nó cho một CString khác, nó sẽ bị cắt bớt
Một số mã đơn giản bắt đầu gặp trục trặc trong sdk mà tôi đang sử dụng và dường như nó đã hoạt động tốt trong một thời gian dài, trên thực tế, tôi gần như chắc chắn rằng mình đã biên dịch các phần của mã và chúng đã hoạt động nhưng gần đây nó đã thất bại . Ví dụ về giá trị xác nhận trong trình gỡ lỗi: void
c++ - Lỗi CString, 'CString': không phải là thành viên của 'ATL::CStringT
Tôi đang cố gắng thực hiện điều này: #include Tên tệp CHAR; // [sp+26Ch] [bp-110h]@1 char v31; // [sp+36Ch] [bp-10h]@1 int v3
c++ - std::cout << string; in giá trị của phần tử chuỗi thay vì địa chỉ thập lục phân của chuỗi. Tại sao?
Tôi biết rằng mảng ký tự khác với chuỗi vì trong chuỗi chứa hậu tố \0 để đánh dấu giá trị. Tuy nhiên, tôi cũng hiểu rằng trong trường hợp chuỗi, mảng ký tự hoặc bất kỳ loại mảng nào khác, mã định danh mảng trong chương trình là một con trỏ tới mảng. Vì thế
c++ - Làm cách nào để chuyển đổi chính xác unsigned char thành CString và chuyển đổi lại kết quả của CString thành unsigned char?
Tôi gặp sự cố khi chuyển đổi ký tự không dấu thành CString và chuyển đổi kết quả CString đã chuyển đổi thành ký tự không dấu. Đầu tiên tôi thử sử dụng CString.append();.
Vi phạm truy cập bộ nhớ trong CString
Tôi đang sử dụng ứng dụng Windows để phân tích một số tệp nhị phân. Ứng dụng gặp sự cố mỗi lần tại một vị trí nhất định (vi phạm quyền truy cập đọc). Tôi đang cố gắng tìm ra nguyên nhân cốt lõi của vụ tai nạn. (f74.fac): Vi phạm quyền truy cập
Làm cách nào để tạo CString từ mảng ký tự?
Bạn cần sử dụng LogMethod() sau để ghi lại nội dung của buf. Vấn đề là LogMethos chỉ chấp nhận "Const CString&" char buf[1024];
Đọc CString từ bộ đệm có độ dài không xác định?
Giả sử tôi có một tập tin. Tôi đọc tất cả byte vào bộ đệm ký tự không dấu. Từ đó tôi đang cố đọc một chuỗi c (null end) mà không biết độ dài của nó. Tôi đã thử cách sau: char* Stream::ReadCString()
c++ - Sự cố với mảng chuỗi
Tôi gặp sự cố khi sử dụng mảng. Tôi gặp lỗi sau Trong hàm 'int main(int, const char**)': 75: error: không thể chuyển đổi 'char*' thành
Giá trị hex CString thành mảng byte
Tôi đã cố gắng thực hiện chuyển đổi từ CString chứa chuỗi hex sang mảng byte và cho đến nay vẫn không thành công. Tôi đã kiểm tra các diễn đàn và dường như không có gì giúp được cho đến nay. Có chức năng nào chỉ có một vài dòng mã thực hiện chuyển đổi này không? Mã của tôi: B
CString tìm mục cuối cùng
Tôi có hai CString s1 và CString s2. Tôi cần tìm mục cuối cùng s2 trong s1. Tôi có thể tìm thấy bất kỳ phương thức nào trong CString như LastIndexOf trong C#. Tôi đang học C++
Cách nhận văn bản dưới dạng CString từ kiểm soát chỉnh sửa phong phú
Tôi muốn lấy toàn bộ văn bản trong điều khiển chỉnh sửa đa dạng thức dưới dạng CString, như GetDlgItemText, nhưng đây là dành cho hộp thoại. Điều gần nhất tôi có thể tìm thấy từ nghiên cứu của mình là: GetTextRange và sử dụng GetTex
Việc khai báo swap() trong không gian tên foo và sau đó sử dụng swap() thay vì foo::swap() trong cùng một không gian tên có nghĩa là foo::swap() không? -6ren
Việc khai báo swap() trong không gian tên foo và sau đó sử dụng swap() thay vì foo::swap() trong cùng một không gian tên có nghĩa là foo::swap() không? -Câu hỏi của tôi rất đơn giản. Có an toàn để làm như sau? Không cần lời khuyên đạo đức như "Đừng đặt tên cho hàm swap()!" hay bất cứ điều gì, file1.hpp // tiêu đề bảo vệ ở đây #include-6ren
Thời gian cập nhật: 2023-11-03 08:25:33
Câu hỏi của tôi rất đơn giản. Có an toàn để làm như sau?
Không cần bất kỳ lời khuyên đạo đức nào như "Làm ơn đừng đặt tên cho hàm swap()!"
tập tin1.hpp
// bảo vệ tiêu đề ở đây
#include //bao gồm std::swap và std::move
không gian tên foo
hoán đổi khoảng trống nội tuyến(T& lhs, T& rhs)
T temp = std::move(lhs);
lhs = std::move(rhs);
rhs = std::move(temp);
tập tin2.cpp
#include "file1.hpp"
void myfun(T a, T b)
swap(a, b); // nó có ngụ ý foo::swap không, vì hàm
// được khai báo trong không gian tên foo??
tất cả phụ thuộc
Các loại của nó nằm trong các không gian tên khác nhau với các trao đổi riêng của chúng, khi đó việc tra cứu liên quan đến tham số sẽ tìm thấy các loại khác nhau
. Nếu không nó sẽ tìm trong không gian tên hiện tại.
trao đổi void nội tuyến(T& lhs, T& rhs) {
std::cout << "foo swap\n";
swap(a, b); // Tìm kiếm swap bằng kiểu T.
// Nếu không tìm thấy, hãy sử dụng không gian tên hiện tại.
// Nếu không tìm thấy, hãy sử dụng không gian tên kèm theo.
không gian tên baz
X& toán tử+=(X const& rhs){return *this;}
hoán đổi khoảng trống nội tuyến(X& lhs, X& rhs) {
std::cout << "Bazz Swap\n";
baz::X a,b;
foo::myfun(a,b); // tìm thấy ::baz::swap()
> a.out
Hoán đổi Bazz
Về c++ - việc khai báo swap() trong không gian tên foo và sau đó sử dụng swap() thay vì foo::swap() trong cùng một không gian tên có nghĩa là foo::swap()? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/34598778/
c++ - char* thay đổi mà không có bất kỳ lý do rõ ràng nào đối với chuỗi dài hơn 10 chữ cái. Tại sao?
Làm thế nào để có được từ vector
xóa một phần tử khỏi
c++ - Tối ưu hóa hàm đệ quy
Tuyên bố không thể xảy ra bên trong một biểu thức toán tử có điều kiện?
c++ - Sự khác biệt giữa p[i], i[p] và *(p+i), *(i+p) trong C/C++-6ren
c++ - Sự khác biệt giữa p[i], i[p] và *(p+i), *(i+p) trong C/C++ - Câu hỏi này đã có câu trả lời ở đây: Với mảng, tại sao lại như vậy a[5] == 5[a]? (20 câu trả lời) Đã đóng cửa 9 năm trước. Tôi muốn biết bốn-6ren sau đây trong C/C++
Thời gian cập nhật: 2023-11-03 08:26:32
Với mảng, tại sao lại xảy ra trường hợp a[5] == 5[a]?
(20 câu trả lời)
Sự khác biệt giữa bốn thuật ngữ sau trong C/C++:
p[i]
tôi [p]
*(p+i)
*(i+p)
trong đó p là mảng và i là chỉ số vòng lặp.
Vectơ định danh không được khai báo trong C++
Chuyển hàm void thành char* C++
c++ - Các câu lệnh dựa trên phạm vi lồng nhau có hoàn toàn hợp pháp không?
c++ - Tạo getters/setters bằng macro chuỗi nhiều dòng
Nhảy từ Java sang C-6ren
java - Chuyển từ Java sang C - Đã đóng. Câu hỏi này dựa trên ý kiến. Hiện tại nó không chấp nhận câu trả lời. Bạn muốn cải thiện câu hỏi này? Cập nhật câu hỏi để việc chỉnh sửa bài đăng này có thể trả lời nó bằng các sự kiện và trích dẫn. Đã đóng 9 năm trước. Cải thiện-6ren
Thời gian cập nhật: 2023-11-03 08:26:52
Chà, tôi đã chơi java được một năm và tôi có thể nói rằng tôi có khả năng viết một chương trình đầy đủ chức năng.
Một tháng trước, tôi bắt đầu làm việc với vectơ, vì vậy khi thử triển khai chúng vào LWJGL, tôi nhận ra rằng Java không đủ nhanh cho mức độ đồ họa mà tôi muốn tạo ra.
Bây giờ đây là vấn đề của tôi, tôi đã quyết định rằng tôi phải học một ngôn ngữ mạnh hơn nhưng tôi phải bắt đầu từ đâu. Tôi đã mày mò về C/C++ trước đây nhưng nó đã giết chết tôi vì một lỗi mà tôi đã sử dụng trong một năm Tham vọng bắt đầu một lần nữa sau đó.
"Thuật toán" tôi sử dụng để hiển thị vectơ là:
z = r(cos t+j sin t)//trong đó t là độ và r là độ dài của nó (tò mò)
Chương trình tiếp tục một vòng lặp, thay đổi độ dài của nó thêm 1, lấy phần cuối X và Y và vẽ một pixel tại điểm đó.
Không phù hợp để viết mã trò chơi.
Kể tên một cuốn sách điện tử miễn phí sẽ giúp tôi tự học C
Có an toàn khi so sánh các con trỏ cùng loại không?
C++ không thể tìm thấy ";" trong chuỗi
c++ - Lỗi kế thừa lớp: Thành viên riêng tư
c++ - Khai báo hàm trong tiêu đề
Lỗi C 11: 'X' không được khai báo trong phạm vi-6ren này
Lỗi C 11: 'X' không được khai báo trong phạm vi này - Tôi gặp phải lỗi sau trong mã của mình, tôi không chắc tại sao vì "socketfd" được khai báo trong client.hpp và được sử dụng trong hàm tạo trong client.cpp , Nhưng sau này khi tôi thử sử dụng thì tôi gặp lỗi. Đầu ra đầu cuối: -6ren
Lỗi C 11: 'X' không được khai báo trong phạm vi này
Thời gian cập nhật: 2023-11-03 08:27:14
Tôi nhận được lỗi sau trong mã của mình, tôi không hiểu tại sao vì "socketfd" được khai báo trong client.hpp và được sử dụng trong hàm tạo trong client.cpp, nhưng khi tôi thử sử dụng nó sau này thì tôi gặp lỗi.
Đầu ra thiết bị đầu cuối:
g++ client.cpp -o client.o -pthread -c -std=c++11
client.cpp: Trong hàm 'void sendMessage(std::string)':
client.cpp:37:23: error: 'socketfd' không được khai báo trong phạm vi này
client.hpp
lớp Khách hàng {
Khách hàng();
~Khách hàng();
void sendMessage(std::string);
trạng thái int, socketfd;
cấu trúc addrinfo Host_info;
struct addrinfo *host_info_list;
client.cpp
#include "client.hpp"
Khách hàng::Khách hàng() {
memset(&host_info, 0, sizeof Host_info);
std::cout << "Thiết lập cấu trúc..." << std::endl;
Host_info.ai_family = AF_UNSPEC;
Host_info.ai_socktype = SOCK_STREAM;
trạng thái = getaddrinfo("192.168.1.3", "8888", &host_info, &host_info_list);
nếu (trạng thái != 0) {
std::cout << "lỗi getaddrinfo" << gai_strerror(trạng thái);
std::cout << "Tạo ổ cắm..." << std::endl;
socketfd = socket(host_info_list->ai_family, Host_info_list->ai_socktype, Host_info_list->ai_protocol);
nếu (socketfd == -1) {
std::cout << "Lỗi ổ cắm";
std::cout << "Đang kết nối..." << std::endl;
trạng thái = kết nối (socketfd, Host_info_list->ai_addr, Host_info_list->ai_addrlen);
nếu (trạng thái == -1) {
std::cout << "Lỗi kết nối" << std::endl;
std::cout << "Đã kết nối thành công" << std::endl;
Khách hàng::~Khách hàng() {
void sendMessage(std::string msg) {
std::cout << "Đang gửi tin nhắn: " << msg << std::endl;
ssize_t byte_sent;
len = strlen(msg.c_str());
byte_sent = send(socketfd, msg.c_str(), len, 0);
Đây là C++ đầu tiên tôi thực hiện và tôi hơi bối rối không hiểu tại sao tôi lại gặp phải lỗi này.
gửiMessage()
mất tích trước đó
Khách hàng::
void Client::sendMessage(std::string msg) {
^^ ^^ ^^ ^^
Về lỗi c++ - C 11: 'X' không được khai báo trong phạm vi này, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/15455156/
Trình vòng lặp được trả về bởi end() vùng chứa tiêu chuẩn nào (nếu có)?
c++ - Ngăn chặn việc gán từ Unique_ptr sang Shared_ptr
android — Không thể mở tệp .exe 1104
Trình vòng lặp được trả về bởi end() vùng chứa tiêu chuẩn nào (nếu có)? -6ren
Trình vòng lặp được trả về bởi end() vùng chứa tiêu chuẩn nào (nếu có)? -Tôi cần một cách để truy cập nhanh vào dữ liệu trong vùng chứa. Vì vậy, tôi nhớ trình vòng lặp cho vị trí dữ liệu đó. Vùng chứa có thể được sửa đổi sau (các phần tử được thêm và xóa), nhưng nếu tôi sử dụng loại vùng chứa không làm mất hiệu lực trình vòng lặp của tôi (như std::map hoặc std::list) - 6ren
Tôi cần một cách để truy cập nhanh vào dữ liệu trong vùng chứa.
Vì vậy, tôi nhớ trình vòng lặp cho vị trí dữ liệu đó. Vùng chứa có thể được sửa đổi sau (các phần tử được thêm và xóa), nhưng nếu tôi sử dụng loại vùng chứa không làm mất hiệu lực trình vòng lặp của tôi (như
) Tôi ổn.
Ngoài ra, dữ liệu của tôi có thể chưa có trong vùng chứa, vì vậy tôi đặt trình vòng lặp thành
container.end()
Để phản ánh điều này.
Container tiêu chuẩn nào đảm bảo
Không thay đổi khi các phần tử được thêm và xóa? Vì vậy tôi vẫn có thể sử dụng trình vòng lặp của mình với
Các giá trị trả về được so sánh mà không nhận được kết quả âm tính giả.
23.2.4/9 Nói về vùng chứa kết hợp:
Các thành viên chèn và thay thế sẽ không ảnh hưởng đến tính hợp lệ của các trình vòng lặp và các tham chiếu đến vùng chứa và các thành viên xóa sẽ chỉ làm mất hiệu lực các trình vòng lặp và các tham chiếu đến các phần tử bị xóa
Bây giờ, có những chỗ mà tiêu chuẩn nói về việc không làm mất hiệu lực "các trình lặp và tham chiếu đến các phần tử vùng chứa", do đó loại trừ
. Tôi không tin đây là một trong số đó - tôi khá chắc chắn
Trình vòng lặp là "trình vòng lặp tới vùng chứa".
23.3.5.4/1 cặp
"Không ảnh hưởng đến tính hợp lệ của các vòng lặp và tham chiếu", 23.3.5.4/3
"Chỉ vô hiệu hóa các vòng lặp và tham chiếu đến các phần tử đã xóa". như nhau,
Các trình vòng lặp là các trình vòng lặp, vì vậy tính hợp lệ của chúng không bị loại trừ.
Một điều cần lưu ý là đối với bất kỳ container nào,
có thể làm mất hiệu lực của trình vòng lặp end() (Tôi cho rằng điều này là do có hai hành vi "tự nhiên", hoặc trình vòng lặp cuối trỏ đến phần cuối của cùng một vùng chứa hoặc phần cuối của vùng chứa mà nó được hoán đổi, nhưng tiêu chuẩn thì không' Tôi không muốn ra lệnh hoặc loại trừ các khả năng khác). Nhưng bạn không trao đổi, chỉ thêm và xóa các phần tử.
Về c++ - Bộ chứa tiêu chuẩn nào (nếu có) là trình vòng lặp được trả về bởi end() liên tục? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/15414541/
Thực hiện nhiều cuộc gọi chức năng có phải là cách tồi không?
Chuỗi C++(int) + chuỗi(int)-6ren
C++ string(int) + string(int) - Câu hỏi này đã có câu trả lời ở đây: Cách triển khai big int trong C++ (14 câu trả lời) Đã đóng 9 năm trước. Tôi có 2 chuỗi, cả hai đều chỉ chứa số. Những con số này lớn hơn -6ren của uint64_t
Thời gian cập nhật: 2023-11-03 08:27:15
Cách triển khai int lớn trong C++
Tôi có 2 chuỗi, cả hai đều chỉ chứa số. Những con số này lớn hơn
giá trị tối đa.
Làm cách nào để cộng 2 số này rồi chuyển kết quả thành chuỗi?
c++ - Toán tử quá tải cho lệnh gọi hàm
Việc thực hiện nhiều lệnh gọi hàm có phải là cách tồi không? -6ren
Thực hiện nhiều cuộc gọi chức năng có phải là cách tồi không? - Làm những việc này có xấu không? : "Không phải là tệ khi tạo các hàm chỉ để gọi các hàm khác sao?" void pyRunScript(&o_Log, &o_Dict, ModuleName, *pDictArgs = NULL) { -6ren
Làm những việc này có xấu không? :
"Không phải là tệ khi tạo ra các hàm chỉ để gọi các hàm khác sao?"
void pyRunScript(&o_Log, &o_Dict, Tên mô-đun, *pDictArgs = NULL)
pyRunScript(o_Log, o_Dict, ModuleName, "run", pDictArgs);
void pyRunScript(&o_Log, &o_Dict, ModuleName, FuncName, *pDictArgs = NULL)
LƯU Ý: Loại dữ liệu bị bỏ qua do chiều rộng hộp hạn chế trong stackoverflow
&o_ có nghĩa là biến chỉ dành cho đầu ra.
Sẽ không tệ nếu có một hàm chỉ gọi một hàm khác có nhiều thông tin hơn phải không? Hoàn toàn không, nếu loại bỏ được sự trùng lặp thì đó là cách dễ dàng để đạt được mục tiêu đó.
Về C++ - việc thực hiện nhiều lệnh gọi hàm có tệ không? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/15363412/
Ký hiệu chỉ số ma trận trong C++
c++ - Toán tử quá tải cho lệnh gọi hàm - 6ren
c++ - Toán tử bị quá tải cho lệnh gọi hàm - có thể nạp chồng toán tử cho chỉ một hàm không. Tôi muốn ghi đè toán tử '->' nhưng chỉ khi nó được gọi bằng hàm in ( ->print() ). Tôi biết đây là một yêu cầu lạ nhưng tôi đang nỗ lực triển khai một API nhất định và tôi cần một cái gì đó như thế này. Ví dụ:-6ren
Có thể quá tải một toán tử chỉ dành cho một hàm hay không. Tôi muốn ghi đè toán tử '->' nhưng chỉ khi nó được gọi bằng hàm in ( ->print() ). Tôi biết đây là một yêu cầu lạ nhưng tôi đang nỗ lực triển khai một API nhất định và tôi cần một cái gì đó như thế này.
Mèo mèo;
cat.walk();
cat->print(); //Tôi chỉ muốn quá tải cuộc gọi này
Tuy nhiên, tôi không muốn làm quá tải toán tử "->" trong mọi trường hợp. Ví dụ:
Mèo* mèo;
cat->walk(); //cái này sẽ hoạt động bình thường
cat->print(); //điều này sẽ không gọi hàm print(),
//vì tôi đã quá tải cat->print()
Bạn có thể nạp chồng toán tử -> bằng cách sử dụng đối tượng trả về ảo. Phương thức print() thực sự có thể được đặt ở chế độ riêng tư và chỉ có thể truy cập được thông qua một trình truy cập. Trong một ví dụ tối thiểu:
cấu trúc Cát;
cấu trúc CatAccessor {
lớp bạn Mèo;
CatAccessor(Cat& cat): cat(cat) {}
Mèo & mèo;
làm mất hiệu lực in();
CatAccessor* operator->() { trả lại cái này }
cấu trúc Cát {
CatAccessor* operator->() { return CatAccessor(*this);
void walk() { std::cerr << "Walk call" << std::endl }
void print() { std::cerr << "In được gọi" << std::endl }
lớp bạn CatAccessor;
void CatAccessor::print() { cat.print() }
mèo->in();
Mèo* catp = &cat;
catp->walk();
// lỗi: catp->print();
Về c++ - toán tử quá tải cho lệnh gọi hàm, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/15346634/
c++ - truyền tham số con trỏ hàm bằng cách sử dụng boost
c++ - CPU bạn đã chọn không hỗ trợ tập lệnh x86-64-6ren
c++ - CPU bạn chọn không hỗ trợ tập lệnh x86-64 - Tôi biết đã có một số câu trả lời cho câu hỏi này, nhưng dường như tôi không hiểu tại sao tôi cứ gặp phải lỗi này. Đây là lời giải thích: Tôi có máy 64 bit được cài đặt Windows 7 x64. GCC của tôi trên Windows (CodeBlock-6ren
c++ - CPU bạn đã chọn không hỗ trợ tập lệnh x86-64
Thời gian cập nhật: 2023-11-03 08:27:36
Tôi biết đã có một số câu trả lời cho câu hỏi này nhưng dường như tôi không thể hiểu tại sao tôi vẫn gặp phải lỗi này.
Đây là lời giải thích: Tôi có máy 64 bit được cài đặt Windows 7 x64. Tôi biên dịch mã của mình theo GCC (CodeBlocks) trên Windows mà không gặp vấn đề gì. Sau đó, tôi quyết định rằng ứng dụng của tôi phải có khả năng di động và tôi quyết định biên dịch nó theo GCC trên Linux. Trên máy 32 bit khác của tôi, mã sẽ biên dịch mà không gặp vấn đề gì. Tuy nhiên, trên máy 64 bit của mình, tôi quyết định cài đặt Ubuntu với tên Wubi. Tất nhiên tôi cũng đã cài đặt phiên bản Wubi x64.
Tôi đã cài đặt thành công Ubuntu trên Wubi, tôi đã cài đặt tất cả những thứ cần thiết, nhưng khi cố gắng biên dịch dự án của mình, tôi gặp lỗi "CPU bạn đã chọn không hỗ trợ tập lệnh x86-64" ở dòng đầu tiên. Được rồi, điều này nghe có vẻ hoàn toàn vô nghĩa đối với tôi, vì tôi đã cài đặt Wubi x64 trên Windows 7 x64 trên máy 64-bit. Vậy tại sao tôi lại nhận được thông báo lỗi nói rằng CPU của tôi không hỗ trợ tập lệnh x86-64?
Có lẽ đó chỉ là do tôi đã cài đặt WUBI thay vì cài đặt Ubuntu trên root theo cách thông thường? Tôi thực sự không thể hiểu được điều này.
:Được rồi, tôi đã tìm thấy ở đâu đó trong Codeblocks tùy chọn được chọn cho kiến trúc "Pentium M". Tôi đã bỏ chọn nó và bây giờ tôi gặp một số lỗi như:
Lỗi: Mất độ chính xác khi chuyển đổi từ void* sang int.
Tại sao điều này chỉ xảy ra trên Linux chứ không phải Windows?
Dựa trên nhận xét này:
EDIT: Ok, ở đâu đó trong Codeblocks, tôi đã tìm thấy tùy chọn đã được chọn cho kiến trúc "Pentium M". Tôi đã bỏ chọn nó và bây giờ tôi gặp một số lỗi như:
Đây là lý do gây ra vấn đề biên dịch - "Pentium M" là kiến trúc 32-bit. gcc trong CodeBlocks sẽ tạo mã 32 bit trên Windows
lỗi: chuyển từ void* sang int mất độ chính xác.
Đó là vì model 64bit trên linux x64 là
LP64
sizeof(dài) == sizeof(con trỏ) == 64bit
sizeof (int) == 32 bit
và bạn đang cố gắng chuyển đổi một con trỏ (
trống *
)(64bit) chèn
(32 bit), khiến thông tin con trỏ bị mất.
Khi xảy ra lỗi biên dịch như vậy, rất có thể mã đó không sạch 64-bit.
Vì lý do nào điều này CHỈ xảy ra trên Linux chứ không phải trên Windows?
Linux trên x64 xây dựng các ứng dụng 64-bit theo mặc định, bạn cần phải
-m32
Thêm vào các tùy chọn xây dựng của chương trình để tạo mã 32 bit (có thể có tùy chọn mục tiêu CodeBlocks để thực hiện việc này)
Về C++ - CPU bạn đã chọn không hỗ trợ tập lệnh x86-64, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/12951385/
Mở rộng std::list thành danh sách vòng tròn
C++ truy cập các thành viên riêng tư
Lỗi C2234: mảng tham chiếu là bất hợp pháp
c++ - Sử dụng sizeof để đạt được lũy thừa tối đa của hai
Tại sao tôi cần tiền tố "this" khi gọi hàm thành viên thông qua con trỏ hàm? -6ren
Tại sao lại cần thiết khi gọi hàm thành viên thông qua con trỏ hàm
Thời gian cập nhật: 2023-11-03 08:27:52
Theo như tôi biết, trong C++, việc gọi một hàm thành viên khác trong một hàm thành viên của cùng một lớp không yêu cầu tiền tố "this" vì nó ẩn. Tuy nhiên, trong trường hợp cụ thể của việc sử dụng con trỏ hàm, trình biên dịch sẽ yêu cầu nó. Đoạn mã sau chỉ biên dịch chính xác nếu tôi bao gồm tiền tố "này" cho cuộc gọi qua con trỏ func -
Khi sử dụng con trỏ hàm, trình biên dịch có thể suy ra khi nó trỏ đến một hàm thành viên của cùng một lớp không?
lớpFooBar
int foo;
FooBar()
foo = 100;
int GetDiff(thanh int)
trả về abs(foo - bar);
typedef int(FooBar::*MyFuncPtr)(int);
void FooBar::Bar()
MyFuncPtr f = &FooBar::GetDiff;
(cái này->*f)(10);
GetDiff(10);
Điều này là bắt buộc vì các con trỏ hàm thành viên (không giống như các con trỏ hàm) không bị ràng buộc và bạn có thể sử dụng chúng với các đối tượng khác nhau.
(foo.*f)(10);
Giới thiệu về c++ - Tại sao tôi cần tiền tố "this" khi gọi hàm thành viên thông qua con trỏ hàm? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/11212454/
Cách đặt địa chỉ của một mảng vào một biến
Tính tích chập của hai hàm bằng FFT (FFTW)
c++ - Hợp nhất các tệp tiêu đề và tệp cpp
c++ - các từ phân tách mã chuỗi - cách thức hoạt động của nó? đoạn mã bên trong
Android API 21 22 công cụ chọn ngày chọn sai năm? -6ren
Android API 21 22 công cụ chọn ngày chọn sai năm? -Tôi đã triển khai "Chế độ xem lịch", phiên bản Lollipop của Datepicker của Android. API Android 21 và 22 khi tôi nhấp vào "2015" để thay đổi năm - 6ren
Android API 21 22 công cụ chọn ngày chọn sai năm?
Tác giả: Vũ trụ không gian
Thời gian cập nhật: 2023-11-03 10:18:36
Tôi đã triển khai "Chế độ xem lịch", phiên bản Lollipop của Datepicker của Android. Có sự khác biệt giữa Android API 21 và 22 trong việc chọn năm của bộ chọn ngày khi tôi nhấp vào "2015" để thay đổi năm:
sử dụngAPI21
sử dụngAPI22
Tôi đang sử dụng trình giả lập Nexus 5. Trong API22 tôi chỉ thấy mục nhập hiện tại (2015), trong khi ở API21 tôi có thể cuộn từ ~1950 đến ~2100. Cùng một mã và theo như tôi biết, cùng một thiết lập mô phỏng.
Tôi tự hỏi liệu đây có phải chỉ là một lỗi không và có ai gặp phải nó hoặc có lời khuyên nào về cách khắc phục nó không? Nếu tôi làm cho nó hoạt động được, tôi thực sự thích Chế độ xem lịch do Lollipop cung cấp. Sẽ cập nhật với bất kỳ thông tin mới nào tôi tìm thấy.
Tìm thấy một sửa chữa nhanh chóng. Lập trình đặt ngày tối thiểu và tối đa cho đối tượng DatePickerDialog. tôi ở đây
Định nghĩa lớp tĩnh DatePickerFragment
Điều này được thực hiện sao cho mọi phiên bản của DatePickerDialog đều được đặt:
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), YourActivityHere, năm, tháng, ngày);
datePickerDialog.getDatePicker().setMinDate(datePickerDialog.getDatePicker().getMinDate());
datePickerDialog.getDatePicker().setMaxDate(datePickerDialog.getDatePicker().getMaxDate());
Nếu bạn đã xác định DatePickerDialog trong Hoạt động XML thì bạn cũng có thể đặt nó, nhưng tôi không chắc liệu có lỗi ở đó hay không.
Giới thiệu về API Android 21 22 chọn ngày sai năm? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/30198270/
android - Khi sử dụng AppCompat, chúng ta có cần chỉ định rõ ràng màu thành phần giao diện người dùng (Spinner, EditText) của nó không
Tại sao FusedLoactionProvider.getLocationAvailability() trả về null (mặc dù không nên)?
Chuyển đổi Bitmap từ Uri trả về null
android - Tất cả văn bản Chúc mừng của tôi xuất hiện bên ngoài trung tâm
Angular DatePicker - Nhiều chỉ thị > [datepicker, datepicker]
Tôi đang cố gắng sử dụng bộ chọn ngày 720Kb. https://github.com/720kb/angular-datepicker Khi sử dụng ví dụ đơn giản: Tôi gặp lỗi: Angular.js:1
datepicker - phản ứng-datepicker không có giá trị ban đầu
Tôi bắt đầu sử dụng thành phần Reac-datepicker. https://github.com/Hacker0x01/react-datepicker Tôi đã chạy ví dụ này và bây giờ tôi muốn điều chỉnh nó để nó không có giá trị ban đầu. Trình diễn
Angularjs - Trạng thái ban đầu của công cụ hẹn hò Angular-ui không được định dạng theo datepicker-popup
Tôi đang sử dụng bộ chọn ngày Angular-ui và mọi thứ thực sự hoạt động tốt ngoại trừ trạng thái ban đầu của bộ chọn ngày. Sau khi tôi chọn ngày, nó trông ổn. Xem bên dưới: Trạng thái ban đầu sau khi chọn ngày trong bộ chọn Vì vậy, rõ ràng là tôi đã nhận được ngày trong trường hợp đầu tiên
Làm cách nào để đặt công cụ hẹn hò hijri thông qua công cụ hẹn hò jquery hoặc công cụ hẹn hò bootstrap?
Tôi cần đặt bộ chọn ngày cho ngày Hijri. Tôi có thể sử dụng công cụ hẹn hò jquery hoặc công cụ hẹn hò bootstrap. Nhưng tôi đã viết mã này
Làm cách nào để tạo phạm vi ngày trong công cụ ghi ngày tháng của giao diện người dùng jquery mà không cần gọi lại công cụ ghi ngày tháng bên trong chức năng ghi ngày tháng chính?
Tôi đã gặp phải sự cố lạ với công cụ chọn ngày của giao diện người dùng jquery khi chọn một phạm vi. Trước khi đặt câu hỏi, tôi đã xem rất nhiều mã do người khác viết. Chúng bao gồm các công cụ jquery và giao diện người dùng theo thứ tự được tối ưu hóa để tất cả chức năng đều hoạt động
datepicker - Vấn đề ngày tối đa của Kendo DatePicker
Tôi có hai Kendo DatePickers để chọn ngày bắt đầu và ngày kết thúc công việc. Một công việc bao gồm nhiều nhiệm vụ có ngày hoàn thành riêng (các nhiệm vụ được liệt kê dưới dạng lưới và mỗi bản ghi sử dụng DatePicker kendo để chọn ngày hoàn thành) Khi người dùng đặt
datepicker - lựa chọn tuần của datepicker trong góc cạnh6
Tôi muốn thêm chức năng vào bộ chọn ngày Vật liệu để có thể chọn tuần.. Vì vậy, khi tôi chọn một ngày từ một hàng, tôi muốn nó xuất ra một phạm vi ngày từ đầu tuần đến cuối tuần. Tôi đã làm điều này trước đây trên lịch jquery thông thường - kiểm tra ảnh
datepicker - Khắc phục hàng trăm cảnh báo hàng từ các ràng buộc chuyển tiếp DatePicker
Sử dụng DatePicker mới (iOS 14) trong SwiftUI, nó hoạt động như mong đợi và trông ổn trên trình mô phỏng và thiết bị, nhưng khi lịch bật lên, tôi nhận được một vài dòng cảnh báo trong cửa sổ đầu ra. Điều này hơi khó chịu! Mặc dù nhật ký được đăng bên dưới, hãy xem
datepicker - Gói quản lý Sonata: Phạm vi DatePicker
Làm cách nào để tạo bộ lọc học thuyết_orm_datetime_range trong Gói quản trị Sonata bằng cách sử dụng Bộ chọn ngày giao diện người dùng jQuery? Tôi đã thử cách sau nhưng không được: pro
datepicker - Làm cách nào để thiết lập bootstrap-datepicker-Rails?
Có ai biết cách thiết lập gem bootstrap-datepicker-Rails không? Tôi đã theo dõi http://rubydoc.info/gems/bootstrap-datepicker-rails/0.
datepicker - Yii2 Kartik DatePicker - ngày không được vượt quá ngày hiện tại
Có cách nào trong kartik DatePicker Yii2 - để tôi có thể tắt ngày lớn hơn ngày hiện tại không? Ví dụ: Nếu hôm nay là ngày 14 tháng 3 năm 2016 thì nên tắt ngày dương lịch là 15 tháng 3 năm 2016
datepicker - SwiftUI: DatePicker có thể hiển thị ngày/giờ ở múi giờ khác với múi giờ hiện tại không?
Trong UIDatePicker, chúng ta có thể thực hiện một số thao tác như datePicker.timeZone = TimeZone(secondsFromGMT: 5*60*60) để chỉ định múi giờ của bộ chọn ngày. nhưng làm thế nào
datepicker - Thêm datePicker trong FullCalendar/nhấp vào nút tùy chỉnh
Tôi đã thêm datePicker ( http://fullcalendar.io ) ngay bên dưới trang FullCalendar ( http://www.eyecon.ro/datepicker/ )
datepicker - Giới hạn tối thiểu/tối đa của Vaadin-Datepicker không hoạt động
Tôi có hai công cụ chọn ngày Vaadin trong một dự án Polymer. Một cái có ngày bắt đầu và một cái có ngày kết thúc. Tôi muốn đảm bảo ngày kết thúc luôn sau ngày bắt đầu. Tôi đã đọc tài liệu API và họ nói rằng bạn có thể sử dụng tối thiểu
datepicker - Tiếng Ả Rập/Hijri DatePicker cho Angular 6
Tôi đang tìm kiếm Datepicker trong Angular 6 có thể hiển thị ngày Ả Rập dựa trên lịch Hijri. Dường như không thể tìm thấy một. Có sẵn thứ gì đó hay chúng ta cần xây dựng nó từ đầu. Câu trả lời hay nhất Ng bootstrap hoặc angul
datepicker - JavaFX8 Có cách nào để chọn văn bản trong DatePicker trong mã mà không cần nhấp vào nó không?
Có cách nào trong JavaFX8 để chọn ngày (dưới dạng văn bản) trong DatePicker từ mã Java không? Tôi muốn kích hoạt điều khiển bằng DatePicker theo cách mà người dùng có thể chỉnh sửa ngày mà không cần sử dụng chuột
Xác thực datepicker Jquery không hoạt động (không sử dụng datepicker bằng cách chỉnh sửa hộp văn bản)
Tôi đang cố gắng xác thực một công cụ chọn ngày vì ngày bắt đầu phải luôn nhỏ hơn Ngày kết thúc. Nếu tôi thay đổi ngày theo cách thủ công, StartDate sẽ hoạt động nhưng EndDate thì không. Mã JavaScript của tôi: $(d
datepicker: hiển thị các giá trị từ cơ sở dữ liệu nhưng cho phép người dùng thay đổi nhiều datepicker() trên trang;
Tôi chưa quen với jquery và javascript. Vì vậy, mặc dù tôi đã xem rất nhiều bài đăng SO giải quyết vấn đề của mình, nhưng tôi không thể "tập hợp" các giải pháp khác nhau thành một giải pháp phù hợp với mình. Ngữ cảnh của tôi: Kết quả truy vấn được hiển thị dưới dạng biểu mẫu. Trong mỗi hàng, ở đâu
c# - Đặt nội dung nút từ sự kiện DatePicker DatePicked
Tôi đang phát triển ứng dụng Windows Phone 8.1. Tôi đang cố gắng sử dụng DatePickerFlyout nhưng không thành công. Tôi đang chọn một ngày và cố gắng đặt nội dung nút với ngày đã chọn nhưng nó không được cài đặt. Khi tôi gỡ lỗi với
không gian vũ trụ
android - OnPrimaryClipChangedListener được gọi nhiều lần
android - Không thể cập nhật các trường TextView trong RecyclerView
android.database.CursorIndexOutOfBoundsException: Yêu cầu chỉ mục 0, kích thước con trỏ là 0
Tại sao FusedLoactionProvider.getLocationAvailability() trả về null (mặc dù không nên)? -6ren
Tại sao FusedLoactionProvider.getLocationAvailability() trả về null (mặc dù không nên)? -Bắt đầu ứng dụng khách dịch vụ google play của tôi như thế này: public class MyApplication mở rộng Ứng dụng triển khai GoogleApiClien-6ren
Bắt đầu ứng dụng khách dịch vụ google play của tôi như thế này:
lớp công khai MyApplication mở rộng Ứng dụng triển khai GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener
GoogleApiClient được đồng bộ hóa được bảo vệ buildGoogleApiClient() {
trả về GoogleApiClient.Builder mới (cái này)
.addConnectionCallbacks(cái này)
.addOnConnectionFailedListener(cái này)
.addApi(LocationServices.API)
/* GoogleApiClient.ConnectionCallbacks */
Log.v(TAG, "Các dịch vụ của Google Play đã được kết nối.");
boolean isConnected = mGoogleApiClient.isConnected(); // - điều này đúng
boolean isLocAvailable = LocationServices.FusedLocationApi.getLocationAvailability(mGoogleApiClient).isLocationAvailable();
// điều này gây ra NullPointerException vì getLocationAvailabality() trả về null.
Phiên bản thư viện dịch vụ Google Play là Rev.24. Tại sao sự kiện con trỏ null này xảy ra? Ứng dụng khách Google API có được khởi tạo, kết nối và mọi thứ diễn ra theo tài liệu không? Có kết nối Wi-Fi...
https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderApi.html#getLocationAvailability(com.google.android.gms.common.api.GoogleApiClient)
Xin lưu ý rằng getLastLocation(GoogleApiClient) luôn có thể trả về null ngay cả khi phương thức này trả về true (ví dụ: cài đặt vị trí đã bị tắt giữa các cuộc gọi).
Vì vậy, có nhiều lý do khiến bạn có thể nhận được giá trị rỗng. Đề xuất của tôi là bạn nên kiểm tra các quyền và đảm bảo quyền truy cập vị trí được cho phép thay vì chỉ kiểm tra xem GoogleClient có được kết nối hay không và liệu vị trí đó có khả dụng hay không. Bạn có thể sử dụng các chức năng sau.
public static boolean checkAppPermissions(Context context, String... strPermissions) {
for (Quyền chuỗi: strPermissions) {
if (!FrameworkUtils.isStringEmpty(permissions)) {
int result = ContextCompat.checkSelfPermission(ngữ cảnh, quyền);
if (kết quả == PackageManager.PERMISSION_GRANTED) {
Bạn có thể gọi nó như thế này
checkAppPermissions(mContext, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION)
Giới thiệu về android - Tại sao FusedLoactionProvider.getLocationAvailability() trả về null (mặc dù không nên)? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/30183906/
android - Khi sử dụng AppCompat, chúng ta có cần chỉ định rõ ràng màu thành phần UI (Spinner, EditText) của nó không - 6ren
android - Chúng ta có cần chỉ định rõ ràng màu thành phần giao diện người dùng (Spinner, EditText) của nó khi sử dụng AppCompat - Trước đây, tôi có DialogFragment và tôi không chỉ định rõ ràng màu thành phần giao diện người dùng (Spinner, EditText) của nó. hộp thoại_fragment_layout.xml -6ren
Trước đây tôi đã có một
, tôi không chỉ định rõ ràng màu thành phần giao diện người dùng (Spinner, EditText).
hộp thoại_fragment_layout.xml
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:id="@+id/name_edit_text"
android:inputType="textNoSuggestions|textCapWords"
android:maxLength="50"
android:ems="10" >
SherlockHành độngThanh
Theme.Sherlock.Light.DarkActionBar
android:minSdkVersion="10", android:targetSdkVersion="21"
Nó trông như sau
Sau khi di chuyển đến
Khả năng tương thích ứng dụng
Theme.AppCompat.Light.DarkActionBar
android:minSdkVersion="10", android:targetSdkVersion="22"
Nó trông giống như bên dưới
Tôi tự hỏi, liệu tôi có làm gì sai trong quá trình di chuyển không? Có thực sự cần thiết phải nói rõ ràng
Màu thành phần giao diện người dùng (Spinner, EditText) chỉ định một màu cụ thể?
Sẽ trông đẹp hơn nếu không phải gán màu thủ công cho Spinner, EditText, v.v. như chúng tôi đã làm (chúng tôi để hệ thống quyết định màu tốt nhất khi chúng tôi sử dụng SherlockActionBar cho Spinner, EditText, ...)?
Xin lưu ý rằng tôi không ở trong
chủ đề cụ thể. tôi chỉ ở đây
chủ đề trong , và tôi muốn
sẽ được kế thừa từ
android:theme="@style/..." >
Mã là
Mã nguồn DialogFragment
lớp công khai MyDialogFragment mở rộng android.support.v4.app.DialogFragment {
tĩnh công khai MyDialogFragment newInstance() {
trả về MyDialogFragment mới();
// Lấy phần tăng cường bố cục
LayoutInflater inflater = getActivity().getLayoutInflater();
Xem view = inflater.inflate(R.layout.dialog_fragment_layout, null);
quốc gia Spinner cuối cùngSpinner = (Spinner)view.findViewById(R.id.country_spinner);
tên EditText cuối cùngEditText = (EditText)view.findViewById(R.id.name_edit_text);
cuối cùng CountryArrayAdapter countryArrayAdapter = new CountryArrayAdapter(this.getActivity());
countrySpinner.setAdapter(countryArrayAdapter);
nameEditText.setHint(R.string.new_watchlist_hint);
nameEditText.setText(org.yccheok.jstock.watchlist.Utils.getDefaultWatchlistName());
Utils.placeCursorAtEndOfText(nameEditText);
hộp thoại AlertDialog cuối cùng = new AlertDialog.Builder(this.getActivity())
.setTitle(R.string.new_watchlist_title)
.setView(xem)
//Thêm các nút hành động
.setPositiveButton(android.R.string.ok, DialogInterface.OnClickListener() {
.setNegativeButton(android.R.string.cancel, DialogInterface mới.OnClickListener() {
.tạo nên();
// http://stackoverflow.com/questions/2620444/how-to-prevent-a-dialog-from-closing-when-a-button-is-clicked
hộp thoại.setOnShowListener(DialogInterface mới.OnShowListener() {
public void onShow(DialogInterface hộp thoạiInterface) {
Nút b = hộp thoại.getButton(AlertDialog.BUTTON_POSITIVE);
b.setOnClickListener(Chế độ xem mới.OnClickListener() {
hộp thoại quay lại;
Mã để hiển thị DialogFragment
khoảng trống riêng tư showMyDialogFragment() {
FragmentManager fm = this.getActivity().getSupportFragmentManager();
MyDialogFragment myDialogFragment = MyDialogFragment.newInstance();
myDialogFragment.setTargetFragment(this, 0);
myDialogFragment.show(fm, MY_DIALOG_FRAGMENT);
Hỗ trợ phiên bản thư viện của AlertDialog,
support.v7.app.AlertDialog
, được thêm vào
Thư viện hỗ trợ Android 22.1
, mang đến một hộp thoại kiểu Vật liệu duy nhất (và chủ đề Xem bên trong nó) cho tất cả các thiết bị API7+. Nếu bạn đang sử dụng AppCompat, bạn cũng nên sử dụng thư viện hỗ trợ
Hộp thoại cảnh báo
Về android - khi sử dụng AppCompat, chúng ta có cần chỉ định rõ ràng màu sắc của các thành phần UI của nó (Spinner, EditText) không, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/30181172/
android.database.CursorIndexOutOfBoundsException: Yêu cầu chỉ mục 0, kích thước con trỏ là 0-6ren
android.database.CursorIndexOutOfBoundsException: Chỉ mục 0 được yêu cầu, có kích thước bằng 0 - Tôi gặp lỗi sau: android.database.CursorIndexOutOfBoundsException: Chỉ mục 0 được yêu cầu, có kích thước bằng 0. Từ đoạn này - 6ren
Thời gian cập nhật: 2023-11-03 10:18:37
android.database.CursorIndexOutOfBoundsException: Yêu cầu chỉ mục 0, với kích thước là 0.
Từ mã này:
công khai Lirik getLirik(String id){
SQLiteDatabase db = this.getReadableDatabase();
Con trỏ trỏ = db.query(TABLE_MUPUH,
Chuỗi mới[] { KEY_ID, JUDUL, KEY_MUPUH },
KEY_ID + "=?",
Chuỗi mới [] {
String.valueOf(id)
if (con trỏ != null && con trỏ.moveToFirst())
con trỏ.moveToFirst();
Lirik lirik = Lirik mới(cursor.getString(1),
con trỏ.getString(2));
trả lại lirik;
và lớp học này
XemMupuh
:sai lầm:
Lirik lirik = db.getLirik(vị trí);
lớp công khai ViewMupuh mở rộng Hoạt động triển khai OnClickListener {
vị trí chuỗi tĩnh riêng tư = null;
văn bản TextView riêng tưJudul, textLirik;
Nút riêng tư bUpdate;
setContentView(R.layout.detail_mupuh);
vị trí = ý định.getStringExtra("vị trí");
if (vị trí != null) {
Log.d("giá trị của vị trí", vị trí);
DBHelper db = DBHelper mới(cái này);
textJudul = (TextView) findViewById(R.id.judul_details);
textJudul.setText(lirik.getJudul());
textLirik = (TextView) findViewById(R.id.lirikdetails);
textLirik.setText(lirik.getLirik());
bUpdate = (Nút) findViewById(R.id.bupdatedetails);
bUpdate.setOnClickListener(cái này);
Ý định ý định = Ý định mới(getApplicationContext(), EditLirik.class);
ý định.putExtra("giá trị vị trí", vị trí);
Có một số vấn đề trong mã của bạn. Đầu tiên, bạn đang gọi hai lần một cách không cần thiết
con trỏ.moveToFirst()
if (cursor != null &&cursor.moveToFirst()) // <-- Cuộc gọi đầu tiên
con trỏ.moveToFirst(); // <-- Lệnh gọi thứ hai
Hơn nữa, bạn đang cố lấy dữ liệu từ con trỏ mặc dù con trỏ trống hoặc không có dữ liệu nào được lấy:
con trỏ.getString(2)); // <-- con trỏ có thể rỗng ở đây
Dù thế nào đi nữa, bạn vẫn muốn giữ tài nguyên ở trạng thái mở. bạn không bao giờ đóng
con trỏ
, nếu có bất kỳ câu hỏi nào,
db
Nó cũng sẽ không đóng. Tôi khuyên bạn nên viết lại
getLirik()
public Lirik getLirik(id chuỗi cuối cùng) {
Lirik lirik = null;
SQLiteDatabase db = null;
Con trỏ con trỏ = null;
db = this.getReadableDatabase();
con trỏ = db.query(TABLE_MUPUH, Chuỗi mới[] { KEY_ID, JUDUL,
KEY_MUPUH }, KEY_ID + "=?", Chuỗi mới[] { id }, null,
lirik = Lirik mới(cursor.getString(1),cursor.getString(2));
} bắt (Ngoại lệ cuối cùng e) {
// Làm điều gì đó với Ngoại lệ (Log, raise, ...)
Nếu bạn làm điều này, hãy coi như bạn đang gọi
có thể nhận được giá trị rỗng, do đó bạn nên sử dụng điều này trong
ViewMupuh.onCreate()
Kiểm tra nó để tránh các lỗi tiếp theo:
nếu (lirik != null) {
Ngoài ra, hãy lưu ý rằng tất cả các gợi ý đều trỏ đến không có bản ghi nào trong cơ sở dữ liệu của bạn khớp với ID bạn truy vấn (có thể cơ sở dữ liệu của bạn trống?)
Về android.database.CursorIndexOutOfBoundsException: Yêu cầu chỉ mục 0, kích thước con trỏ là 0, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
https://stackoverflow.com/questions/30175889/
android - Không thể cập nhật các trường TextView trong RecyclerView - 6ren
android - Không thể cập nhật các trường TextView trong RecyclerView - Tôi đang di chuyển từ ListView sang RecyclerView và cuối cùng tôi gặp sự cố khi cập nhật một trong các trường. Ứng dụng của tôi có một danh sách đơn giản với một số hình ảnh được tìm thấy trên internet. Khi bạn chọn một, hình ảnh sẽ được tải xuống điện thoại của bạn để xem - 6ren
Tôi đang chuyển từ
Di chuyển đến
và cuối cùng vấn đề tôi gặp phải là cập nhật một trong các trường. Ứng dụng của tôi có một danh sách đơn giản với một số hình ảnh được tìm thấy trên internet. Khi bạn chọn một hình ảnh sẽ được tải xuống điện thoại của bạn để xem ngoại tuyến sau này. bộ chuyển đổi từ
Cơ sở dữ liệu SQLite
Lấy dữ liệu để khi bạn bấm vào một số hình ảnh, cơ sở dữ liệu sẽ được cập nhật (văn bản từ
"Click vào đây để tải về"
"Đã tải xuống"
Nên làm theo.
Tôi gặp vấn đề tương tự, nhưng mỗi lần Ứng dụng cập nhật cơ sở dữ liệu, tôi chỉ gọi
populateList();
. Tôi biết đây không phải là giải pháp lý tưởng nhưng nó hiệu quả. Bây giờ tôi muốn sử dụng
hoặc tốt hơn
thông báoItemChanged(vị trí)
để hoàn thành nó một cách chính xác, nhưng tôi không thể làm cho nó hoạt động được.
Dù sao, đây là mã, xin lỗi, nó hơi lộn xộn. Đây chỉ là một mã kiểm tra (
Mã từ ví dụ):
lớp công khai RecyclerFragment mở rộng Fragment {
mAdapter imgAdapter riêng tư;
cơ sở dữ liệu riêng tưHandler db;
ProgressDialog riêng tư mProgressDialog;
RecyclerFragment công khai() {
db = DatabaseHandler mới(getActivity());
Danh sách listdb = db.getImages();
mAdapter = ImgAdapter mới(getActivity(), listdb);
Xem view = inflater.inflate(R.layout.fragment_main, container, false);
RecyclerView RecyclerView = (RecyclerView) view.findViewById(android.R.id.list);
RecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST));
RecyclerView.setHasFixedSize(true);
RecyclerView.setLayoutManager(GridLayoutManager mới(
getActivity(), getResources().getInteger(R.integer.list_columns)));
RecyclerView.setAdapter(mAdapter);
lớp riêng ImgAdapter mở rộng RecyclerView.Adapter
triển khai ItemClickListener {
Danh sách công khai mList;
public ImgAdapter(Context context, List listdb) {
mList = listdb;
public ViewHolder onCreateViewHolder(ViewGroup cha, int viewType) {
Trình tăng cường LayoutInflater = LayoutInflater.from(mContext);
Xem view = inflater.inflate(R.layout.list_row1, parent, false);
trả về ViewHolder mới (xem, cái này);
public void onBindViewHolder(người giữ ViewHolder cuối cùng, vị trí int cuối cùng) {
Hình ảnh image = mList.get(position);
Holder.mTitle.setText(image.getTitle());
holder.mDownloadStatus.setText(image.getDownloadStatus());
trả về mList == null ? 0 : mList.size();
public void onItemClick(Chế độ xem, vị trí int) {
Log.v("VỊ TRÍ 0:", " " + vị trí);
một số logic nvm
Chuỗi imgurl = "http:/...";
String imagename = "Hình ảnh thứ hai";
GetImages mới(imgurl, tên hình ảnh).execute();
Tôi đã thử mAdapter.notitfy... , cũng không gặp may
Điều này không có gì:
thông báoItemChanged(vị trí);
lớp tĩnh riêng ViewHolder mở rộng RecyclerView.ViewHolder
triển khai View.OnClickListener {
TextView mTitle;
TextView mDownloadStatus;
ItemClickListener mItemClickListener;
public ViewHolder(Chế độ xem dạng xem, ItemClickListener itemClickListener) {
mTitle = (TextView) view.findViewById(R.id.text1);
mDownloadStatus = (TextView) view.findViewById(R.id.text2);
mItemClickListener = itemClickListener;
view.setOnClickListener(cái này);
mItemClickListener.onItemClick(v, getPosition());
giao diện ItemClickListener {
void onItemClick(Chế độ xem, vị trí int);
Đây là lớp AsyncTask của tôi được sử dụng để tải xuống hình ảnh và cập nhật db
Tôi đã xóa một số mã chỉ để làm cho nó sạch hơn
lớp riêng tư GetImages mở rộng AsyncTask